簡體   English   中英

Sheet Set value 制作電子表格的副本

[英]Sheet Set value the make copy of spreadsheet

我正在嘗試從 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); }); }

問題是我在“A2”范圍內的工作表中所做的更改未應用到副本中。 有什么建議嗎?

謝謝

forEach()循環中的代碼是異步執行的

這意味着您的工作表可能會在設置新值之前全部復制。

您可以通過實施強制代碼等待的SpreadsheetApp.flush())Utilities.sleep()請求來避免這種情況。

樣本:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM