繁体   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