【问题标题】:AppScript fails to execute when automated using AppScript Dashboard使用 AppScript 仪表板自动化时,AppScript 无法执行
【发布时间】:2019-07-09 10:38:54
【问题描述】:

我正在运行一个脚本,它获取最新的工作表并复制它。我想每周二和周五运行这个。我已将脚本设置为使用 App Script Dashboard 自动触发。但是,脚本失败并显示错误“请先选择活动工作表”

如果我从脚本运行代码,它工作正常。我猜这是因为文件已打开,而活动工作表是我选择的工作表。

这是我的代码:

function createNewSheet() {

  //Calcualte tomorrow's date
  var today = new Date();
  var tomo = new Date();
  tomo.setDate(today.getDate()+1);
  var SheetName = tomo.toLocaleDateString();
  Logger.log(SheetName);

  //Duplicate sheet and set the name to tommorrow's date
  activeSheet = SpreadsheetApp.getActiveSpreadsheet();
  Logger.log(activeSheet.getName());
  activeSheet.duplicateActiveSheet();
  newactiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  newactiveSheet.setName(SheetName);

}

我想知道我需要对我的代码进行哪些更改以确保自动化可以正常工作。

【问题讨论】:

  • 你的猜测是正确的。 activeSheet 在您的代码中只是电子表格的名称。你需要类似var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();Google Doc
  • 但是我得到一个错误 Cannot find function duplicateActiveSheet in object Sheet 编辑:我已经修改代码现在读取 ``activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); Logger.log(activeSheet.getName()); SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();
  • 好的。让我们进行故障排除。问题:如果你按原样运行你的脚本,你认为它会失败吗?如果是,那么请运行您的脚本,然后查看执行记录,复制记录(完整)并编辑您的问题以包含记录。
  • 代码是否与该编辑一起运行?
  • 对不起,我之前没有回复。是的,代码通过编辑执行 - 但它总是复制第一个工作表。我希望它复制最新的工作表。我最终放弃了,之后没有尝试任何事情。

标签: google-apps-script google-sheets


【解决方案1】:

你能试试下面的代码吗?

function createNewSheet() {

  //Calcualte tomorrow's date
  var today = new Date();
  var tomo = new Date();
  var yesterday = new Date();
  yesterday.setDate(today.getDate()-1);
  tomo.setDate(today.getDate()+1);
  var SheetName = tomo.toLocaleDateString();
  Logger.log(SheetName);

  //Duplicate sheet and set the name to tommorrow's date
  activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(yesterday).activate();
  Logger.log(activeSheet.getName());
  activeSheet.duplicateActiveSheet();
  newactiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  newactiveSheet.setName(SheetName);
}

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多