如何使用 Google Apps 脚本针对大型数据集(10 万行和 10 列)优化此函数?
How to optimize this function for large dataset (100k rows & 10 cols) using Google Apps Script?
这个函数 运行 没问题,但最多 20k 行。我可以做些什么来让它 运行 变快?
const SOURCE_FILE_ID = 'ID';
function getData() {
const sourceSheet = SpreadsheetApp.openById(SOURCE_FILE_ID);
const sourceRng = sourceSheet.getSheetByName('ativcopiar').getRange(1, 1, sourceSheet.getLastRow(), 9);
const sourceValues = sourceRng.getValues();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Ativ.');
var destinationRng = sheet.getRange(1, 1, sheet.getLastRow(), 9);
destinationRng.clearContent();
destinationRng.setValues(sourceValues);
}
有时会超过时间限制
欣赏任何光线!
谢谢
我相信你的目标如下。
- 您想减少脚本的处理成本。
这样的话,使用表格API怎么样?使用Sheets API 时,可以稍微降低处理成本。 Ref 当你的脚本使用 Sheets API 时,它变成如下。
修改后的脚本:
在您使用此脚本之前,please enable Sheets API at Advanced Google services。
function myFunction() {
const SOURCE_FILE_ID = '###';
const sheet = SpreadsheetApp.openById(SOURCE_FILE_ID).getSheetByName('ativcopiar');
const dstSS = SpreadsheetApp.getActiveSpreadsheet();
var dstSheet = dstSS.getSheetByName('Ativ.');
var destinationRng = dstSheet.getRange(1, 1, dstSheet.getLastRow(), 9);
destinationRng.clearContent();
SpreadsheetApp.flush();
const values = Sheets.Spreadsheets.Values.get(dstSS.getId(), "'ativcopiar'!A1:I" + sheet.getLastRow()).values;
Sheets.Spreadsheets.Values.update({values}, dstSS.getId(), "Ativ.", {valueInputOption: "USER_ENTERED"});
}
参考文献:
这个函数 运行 没问题,但最多 20k 行。我可以做些什么来让它 运行 变快?
const SOURCE_FILE_ID = 'ID';
function getData() {
const sourceSheet = SpreadsheetApp.openById(SOURCE_FILE_ID);
const sourceRng = sourceSheet.getSheetByName('ativcopiar').getRange(1, 1, sourceSheet.getLastRow(), 9);
const sourceValues = sourceRng.getValues();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Ativ.');
var destinationRng = sheet.getRange(1, 1, sheet.getLastRow(), 9);
destinationRng.clearContent();
destinationRng.setValues(sourceValues);
}
有时会超过时间限制
欣赏任何光线! 谢谢
我相信你的目标如下。
- 您想减少脚本的处理成本。
这样的话,使用表格API怎么样?使用Sheets API 时,可以稍微降低处理成本。 Ref 当你的脚本使用 Sheets API 时,它变成如下。
修改后的脚本:
在您使用此脚本之前,please enable Sheets API at Advanced Google services。
function myFunction() {
const SOURCE_FILE_ID = '###';
const sheet = SpreadsheetApp.openById(SOURCE_FILE_ID).getSheetByName('ativcopiar');
const dstSS = SpreadsheetApp.getActiveSpreadsheet();
var dstSheet = dstSS.getSheetByName('Ativ.');
var destinationRng = dstSheet.getRange(1, 1, dstSheet.getLastRow(), 9);
destinationRng.clearContent();
SpreadsheetApp.flush();
const values = Sheets.Spreadsheets.Values.get(dstSS.getId(), "'ativcopiar'!A1:I" + sheet.getLastRow()).values;
Sheets.Spreadsheets.Values.update({values}, dstSS.getId(), "Ativ.", {valueInputOption: "USER_ENTERED"});
}