我无法一天几次从同一工作表中更改两张纸之间的活动工作表。
当我手动运行时,我的代码在脚本编辑器中工作正常,但是当设置为时间驱动的触发器时,它根本不会运行。我从拥有工作表的帐户运行它,并通过"当前项目的触发器设置触发器。" 我找不到任何具体原因,为什么它不会在时间驱动的触发器上运行
我想要运行的代码如下 -
// This function cycles the dashboards
function getCycled() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = SpreadsheetApp.getActiveSheet().getName();
// ifs to make this cycle only if already displaying a DB
// If DB 2.0
if (sheetName == "Dashboard 2.0") {
// change to Q/S
ss.setActiveSheet(ss.getSheetByName("Quality/Safety"));
}
// If Q/S
if (sheetName == "Quality/Safety") {
// change to DB 2.0
ss.setActiveSheet(ss.getSheetByName("Dashboard 2.0"));
}
}

我甚至试图进一步简化代码以进行基本更改。再次,它在编辑器中运行得很好,但仍然不会在时间驱动的触发器上运行。这是我的代码的问题,还是我不了解可安装/时间驱动的触发器?
function getCycledB() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheets()[0]);
}

提前谢谢
答案 0 :(得分:0)
我认为时间触发器在getActiveSpreadsheet
时无法正常工作,因为没有"有效"片。如果您使用openById
获得电子表格并传递电子表格的唯一ID,则该工作正常。
答案 1 :(得分:0)
下面的代码使用其ID获取电子表格并将其放入变量ss中。
电子表格不是在客户端实际打开的。 它仅在服务器上打开(因此脚本可以访问它。)。
var ss = SpreadsheetApp.openById("GOOGLEID");
您将收到电子表格的唯一ID。 如果通过运行此代码并将结果保存在日志中来查找工作表ID,则可以找到该ID。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
Logger.log(sheet.getSheetId());
ID应该看起来像粗体信息。 https://docs.google.com/a/yourdomain.com/spreadsheets/d/的 1p8FzOBwGELiKyjnhwoWqfG2l8mt1o889Ln5RKtUsng 强> /编辑?USP =共享