【发布时间】:2017-01-31 21:55:28
【问题描述】:
我正在使用 Google Apps 脚本在两个单独的 Google 表格之间执行索引和匹配功能,并检索匹配记录并填充指定的表格和列。虽然它工作得很好,但我想让脚本更有效地运行,从而减少时间。有人可以看看下面的代码示例并为我提供建议/指示
function SiteIDLookup() {
var search_spreadsheet = SpreadsheetApp.openById("GoogleSheetId");
SpreadsheetApp.setActiveSpreadsheet(search_spreadsheet);
var find_spreadsheet = SpreadsheetApp.openById("GoogleSheetId");
SpreadsheetApp.setActiveSpreadsheet(find_spreadsheet);
var ssheet = search_spreadsheet.getSheetByName("schoolSiteID_Lookup");
var fsheet = find_spreadsheet.getSheetByName("Info_Formatted");
var FMaxR = fsheet.getMaxRows();
fsheet.getRange(2, 16, FMaxR, 1).clear({contentsOnly: true});
var findData = fsheet.getDataRange().getValues();
var searchData = ssheet.getDataRange().getValues();
for(var i=0; i < findData.length; i++) {
for(var j=0; j < searchData.length; j++) {
var find = findData[i][14];
var searchref = searchData[j][0];
if(find == searchref && find != "" ) {
var found = ssheet.getRange(j+1,2,1,1).getDisplayValue();
fsheet.getRange(i+1,16,1,1).setValue(found);
}
}
}
}
【问题讨论】:
-
如何编辑数组中的数据?在“for”循环中,有一个 setValue。它使用 getValues 检索“fsheet”的数据,在“for”循环中编辑数据数组。从“for”循环退出后,它使用“setValues”将编辑的数据数组覆盖到“fsheet”。我认为这会导致 API 的使用次数减少并加快速度。我很抱歉我的英语不好。
标签: google-apps-script google-sheets