此函式運行正常,但最多可運行 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);
}
有時,它超過了時間限制。
欣賞任何光!謝謝。
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想降低腳本的流程成本。
在這種情況下,如何使用 Sheets API?使用 Sheets API 時,可以稍微降低處理成本。Ref當 Sheets API 用于您的腳本時,它變成如下。
修改后的腳本:
在使用此腳本之前,請在高級 Google 服務中啟用 Sheets API。
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"});
}
參考:
- 基準測驗:使用 Google Apps 腳本讀寫電子表格
- 方法:電子表格.values.get
- 方法:spreadsheets.values.update
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/365567.html
標籤:javascript 谷歌应用程序脚本 谷歌表格 设定值
