gpt4 book ai didi

google-apps-script - 用于遍历电子表格 ID 列表并将范围复制到主文件的 Google Apps 脚本

转载 作者:行者123 更新时间:2023-12-04 02:12:36 25 4
gpt4 key购买 nike

我的驱动器中有一个文件夹,我在其中为每个新客户创建一个文件夹(基于模板结构)。我需要从一个文件中提取信息,特别是从它们的每个文件夹中提取信息。我在列表中有电子表格 ID,我知道工作表名称,我只是不确定如何创建一个循环来遍历每个文件并将其附加到主文件。

最近发现一个脚本here这可以解决问题,但它假定所有电子表格都在一个文件夹中:

function getDataToMaster2() {
var comp = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("System_Control").getRange("d7").getValue();
var folder = DriveApp.getFolderById(comp); //Define id of folder
var contents = folder.getFiles();
var file;
var data;
var sheetMaster = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form_Responses"); //first sheet of the file, change by getSheetByName("NAME") if you want
while(contents.hasNext()){
file = contents.next();
if (file.getMimeType() == "application/vnd.google-apps.spreadsheet") {
var sheet = SpreadsheetApp.openById(file.getId()).getSheetByName("Form_Responses");//first sheet of the file, change by getSheetByName("NAME") if you want
var startRow = 2;
var data = sheet.getDataRange().getValues();
var colToCheck = 14;
for(var j = 1; j < data.length;j++){
if(data[j][colToCheck-1] != "copied"){
sheetMaster.appendRow(data[j]);
sheet.getRange((j+1), colToCheck).setValue("copied");
SpreadsheetApp.flush();
}
}
}
}
}

最佳答案

这是一个遍历 idList 的函数,idList 是一个数组,其中包含要复制的每个电子表格的 ID。它从每个“Sheet1”中获取所有数据,并复制到事件电子表格中的工作表“Master”。

数据复制立即发生,不会像您的示例那样循环遍历行;一次移动更大的 block 会更有效率。

function getDataToMaster2() {
var idList = ['id1', 'id2', 'id3'];
var sheetMaster = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Master");
for (var i = 0; i < idList.length; i++) {
var sheet = SpreadsheetApp.openById(idList[i]).getSheetByName("Sheet1");
var data = sheet.getDataRange().getValues();
var lastRow = sheetMaster.getLastRow();
sheetMaster.insertRowsAfter(lastRow, data.length);
sheetMaster.getRange(lastRow + 1, 1, data.length, data[0].length).setValues(data);
}
}

如果 ID 存储在工作表“Ids”的 B 列中,那么函数的开头将不同:

  var sheetIds = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Ids");
var values = sheetIds.getRange('B:B').getValues();
var idList = values.map(function (row) {
return row[0];
}).filter(function (id) {
return id;
});

然后像上面一样进行 for 循环。

关于google-apps-script - 用于遍历电子表格 ID 列表并将范围复制到主文件的 Google Apps 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com