Javascript google脚本:根据触发器(编辑或时间驱动)将公式计算的值从一个工作表复制到另一个工作表

Javascript google脚本:根据触发器(编辑或时间驱动)将公式计算的值从一个工作表复制到另一个工作表,javascript,google-apps-script,triggers,copy,Javascript,Google Apps Script,Triggers,Copy,所以我有一个谷歌电子表格。里面大约有15张纸。我想将这15张工作表中的单元格值复制到另一个工作簿中 我尝试使用importrange函数。我试图复制的值是动态的,基于计算它的公式 所以我试着使用export函数 function copy(){ var sss = SpreadsheetApp.openById('14wsBaW2HWqtdPZBDycsRVQCgOJuaNIYDKDJOjTDwWO8'); //replace with source ID var ss = sss.get

所以我有一个谷歌电子表格。里面大约有15张纸。我想将这15张工作表中的单元格值复制到另一个工作簿中

我尝试使用importrange函数。我试图复制的值是动态的,基于计算它的公式

所以我试着使用export函数

function copy(){

 var sss = SpreadsheetApp.openById('14wsBaW2HWqtdPZBDycsRVQCgOJuaNIYDKDJOjTDwWO8'); //replace with source ID
 var ss = sss.getSheetByName('Round 1'); //replace with source Sheet tab name

 var range = ss.getRange('G14'); //assign the range you want to copy
 var data = range.getValues();

 var tss = SpreadsheetApp.openById('1SWOZ_Xq-1E3LHfE1FwTt4O9bs-FIAk3I5Wjz9VKFh6A'); //replace with destination ID
 var ts = tss.getSheetByName('Net Worth'); //replace with destination Sheet tab name
 ts.getRange(2, 2, data.length, data[0].length).setValues(data);


 var sss = SpreadsheetApp.openById('14wsBaW2HWqtdPZBDycsRVQCgOJuaNIYDKDJOjTDwWO8'); //replace with source ID
 var ss = sss.getSheetByName('Round 2'); //replace with source Sheet tab name

 var range = ss.getRange('G14'); //assign the range you want to copy
 var data = range.getValues();

 var tss = SpreadsheetApp.openById('1SWOZ_Xq-1E3LHfE1FwTt4O9bs-FIAk3I5Wjz9VKFh6A'); //replace with destination ID
 var ts = tss.getSheetByName('Net Worth'); //replace with destination Sheet tab name
 ts.getRange(3, 2, data.length, data[0].length).setValues(data);

}
现在您可以看到,由于我必须从工作簿的大约15页中复制值,因此我必须通过更改I=1-15的第I轮和发布的行号来编写复制粘贴函数的多行


我想要实现的是减少代码的大小,并基于时间触发器、打开或编辑触发器。但是,我被卡住了,找不到多少

你可以把书上的所有纸张都拿出来,然后在每一张纸上循环,复制“G14”单元格中的值。将它们保存在二维数组中。请参阅下面的代码

 ////copying values from each sheet
 var copyBook = SpreadsheetApp.getActiveSpreadsheet();
 var copySheets = copyBook.getSheets();
 var selectedValues = []; 
 for(var sheet in copySheets)
 {
   //Logger.log(copySheets[sheet].getName());
   var value = copySheets[sheet].getRange('G14').getValue();
   selectedValues.push([value]);
 }
 //Logger.log(selectedValues);
现在,您的值被复制到数组中,现在您希望将其粘贴到目标工作表中

////pasting copied values
 var pasteBook = SpreadsheetApp.openById('destination book id'); 
 var pasteSheet = pasteBook.getSheetByName('destination sheet name');
 pasteSheet.getRange(2, 2, selectedValues.length, 1).setValues(selectedValues);
如果要设置触发器,请参考以下答案:

将上述代码替换为//您要完成的工作部分