我有一张15页的Gsheet工作簿。有一个改变时间表的中心位置。一旦用户集中更改它 - 它应该应用所有工作表中的更改。
但是,在每张纸上,他也可以在本地更改时间而不会影响其他人。
因此,我刚刚写了一个脚本,将中心值粘贴到所有其他地方。但是,它是一个缓慢的for loop
并需要15秒才能完成:
function set_time_frame() {
var Gsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('General information');
var inputs = Gsheet.getRange('f3:f4').getValues();
var n = 15; // sheets to place
for ( var i = 1; i <= n; ++i ){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[i];
sheet.getRange('c4:c5').setValues(inputs);
}
}
有没有办法立即粘贴到多个范围?
答案 0 :(得分:0)
如何使用Sheets API v4?请将此视为几个答案之一。要使用以下脚本,请按以下步骤启用Sheets API for Advanced Google Services和API控制台。
function set_time_frame() {
var Gsheet = SpreadsheetApp.getActiveSpreadsheet();
var inputs = Gsheet.getSheetByName('General information').getRange('f3:f4').getValues();
var n = 15; // sheets to place
var resource = {};
resource.valueInputOption = "USER_ENTERED";
var data = [];
for ( var i = 1; i <= n; ++i ) {
data.push({
values: inputs,
range: Gsheet.getSheets()[i].getSheetName() + "!c4:c5"
});
}
resource.data = data;
Sheets.Spreadsheets.Values.batchUpdate(resource, Gsheet.getId());
}