duplicateActiveSheet() 不适用于 getSheetByName()

duplicateActiveSheet() not working with getSheetByName()

我很容易做错事,但是当使用空白 sheet 和 Google 应用程序脚本来复制通过 getSheetByName() 获得的活动 sheet 时,我得到了类型错误。

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  if (ss !== null) {
    Logger.log(ss.getName()); // log: Sheet1
    Logger.log(ss.getSheetName()); // log: Sheet1
    Logger.log(SpreadsheetApp.getActiveSheet().getSheetName()); // log: Sheet1
    ss.duplicateActiveSheet(); // TypeError: Cannot find function duplicateActiveSheet in object Sheet.
  }
}

方法 duplicateActiveSheet()spreadsheet method,不是 sheet 方法。

修改您的代码如下:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet1');
  if (sh !== null) {
    sh.activate();// make this sheet active
    Logger.log(sh.getName()); // log: Sheet1
    ss.duplicateActiveSheet();
  }
}

您可以使用脚本编辑器中的自动完成功能轻松避免此类错误。

只需在变量后键入一个句点 (.),您就会在键盘上使用 "control space" 看到所有可用的方法。