【发布时间】:2019-12-29 18:49:36
【问题描述】:
我管理一个包含多个工作表的 Google 电子表格。我使用脚本来自动化第一张纸上的一些流程。最近,一位用户不小心重命名了第一张工作表 - 所以脚本停止工作,直到我发现并更正了工作表的名称。
我的问题是:我怎样才能防止这种情况再次发生?有没有办法保护工作表名称不被我以外的用户更改?或者,在脚本中,是否有不同的方式来引用第一张纸,无论其名称如何?即,不是 sheet.getSheetName 而是有类似 sheet.getFirst 的东西,它返回第一个工作表,而不管其名称如何?
这是一个受到影响的脚本的示例。
function onOpen(){
//Sheet where this script should run
var SHEETNAME = "Scan IN Check OUT"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
if (sheet.getSheetName() == SHEETNAME ) { //Check we are on the correct sheet
var sheet = SpreadsheetApp.getActiveSheet();
//Find the last cell with data in that specific column (A in this case)
var lastCell = sheet.getRange('A1').getNextDataCell(SpreadsheetApp.Direction.DOWN);
//Activate the next cell
lastCell.offset(1, 0).activate();
}
}
【问题讨论】:
-
在较早的帖子中,我发现建议使用基于时间的触发器每 5 分钟左右重命名工作表 (Zig Mandel)。我会试试看。
-
我会确定您想要的工作表标签的 ID 号,然后使用 ID 号确定要获取的工作表选项卡。不幸的是,没有办法通过 ID 号获取工作表选项卡,因此您需要获取所有工作表选项卡,遍历它们并比较 ID 号,然后在找到具有正确 ID 号的工作表选项卡时停止循环.当该代码运行时,您还可以检查名称是否正确,如果不正确,则更改它。这样做可以避免触发器按时间间隔运行。
-
谢谢!这就是我一直在寻找的。span>
标签: google-apps-script google-sheets