[英]Sheet Set value the make copy of spreadsheet
I'm trying to produce several spreadsheets from a model,我正在尝试从 model 生成多个电子表格,
function copySpreadSheet() { var filesName = ['file1', 'file2', '...'] filesName.forEach(function copySpreadSheet(fileName) { var spreadsheet = SpreadsheetApp.openById('model_ID'); var sheet = spreadsheet.getSheetByName('REF'); sheet.getRange('A2').setValue(fileName); var destFolder = DriveApp.getFolderById("Folder_ID") DriveApp.getFileById(spreadsheet.getId()).makeCopy(fileName, destFolder); }); }
The problem is that the changes i made in the sheet at range 'A2' are not applied in the copies.问题是我在“A2”范围内的工作表中所做的更改未应用到副本中。 Any suggestions pls?
有什么建议吗?
Thank you谢谢
forEach()
loop is executed asynchronously forEach()
循环中的代码是异步执行的This means that your sheets might get all copied before the setting of a new value has taken place.这意味着您的工作表可能会在设置新值之前全部复制。
You avoid this by implementing SpreadsheetApp.flush()) and Utilities.sleep() requests that force the code to wait.您可以通过实施强制代码等待的SpreadsheetApp.flush())和Utilities.sleep()请求来避免这种情况。
Sample:样本:
function copySpreadSheet() {
var filesName = ['file1', 'file2', '...']
filesName.forEach(function copySpreadSheet(fileName) {
Logger.log(fileName);
var spreadsheet = SpreadsheetApp.openById('model_ID');
var sheet = spreadsheet.getSheetByName('REF');
SpreadsheetApp.flush();
sheet.getRange('A2').setValue(fileName);
SpreadsheetApp.flush();
var destFolder = DriveApp.getFolderById("Folder_ID")
Utilities.sleep(1000);
DriveApp.getFileById(spreadsheet.getId()).makeCopy(fileName, destFolder);
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.