簡體   English   中英

遍歷文件夾中的多個電子表格,我想從每個表格中提取最后 3 列

[英]Iterating over a number of spread sheets in a folder and I want to pull last 3 columns from each

我正在嘗試找到一種解決方案,將多張工作表的數據提取到單個主文檔中。 我只對每張表的最后三列感興趣,但是這些表的列數並不相同。

    function getDataFromSpreadsheet(ssID) {

  var ss = SpreadsheetApp.openById(ssID);
  var ws = ss.getSheets()[0];
  var data = ws.getRange("A1:W" + ws.getLastRow()).getValues();
return data;

}

我想我可以用 getrow.length()[-3] 做一些事情,但我完全沒有運氣讓它工作。

改變你的范圍

從:

var data = ws.getRange("A1:W" + ws.getLastRow()).getValues();

至:

var data = ws.getRange(1, ws.getLastColumn()-2, ws.getLastRow(), 3).getValues();

例子:

表 1:

在此處輸入圖像描述

Output:

在此處輸入圖像描述

參考:

  function get_last_three_columns_from_spreadsheet_and_sheet(
     spreadsheet_id = SpreadsheetApp.getActiveSpreadsheet().getId(),
     sheet_name = SpreadsheetApp.getActiveSheet().getName()
   ) {
     const spreadsheet = SpreadsheetApp.openById(spreadsheet_id);
     const sheet = spreadsheet.getSheetByName(sheet_name);
     const last_column = sheet.getLastColumn();
     const last_three_columns = [last_column, last_column - 1, last_column - 2];
   
     const data = last_three_columns.map((column) => {
       const last_row = sheet.getLastRow();
       return sheet.getRange(1, column, last_row).getValues();
     }, sheet);
     
     Logger.log(data);
     return data;
   }

也發布在 Reddit 上,我會嘗試這樣的事情。 您可以將 function 直接插入任何電子表格腳本並運行它。

默認情況下,如果你不給它 arguments 它只會使用活動的電子表格和工作表。

如果您從其他地方調用它,如果您給它一個電子表格和工作表名稱參數,它將獲得最后三列信息(如果它們可用)。 如果您的工作表少於三列,則會出錯。

只需將另一個“last_column - n”添加到數組中,就可以編輯常量“last_three_columns”以獲得最后的 4 或 5 或 n。

如果您希望 function 用於某些指定的 n 列,則需要進行一些調整,但原始 scope 用於最后 3 列。

結果是二維列 arrays 的數組,例如,

// Output
[
  [["Column 3"], ["data"], etc.],
  [["Column 2"], ["data"], etc.],
  [["Column 1"], ["data"], etc.]
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM