标题是问题。
我正在使用Google云端硬盘中的电子表格,我们在其中找到了一张名为Name registry
的中央工作表,其中包含曾经访问某些笔记本电脑的人员的姓名,以便他们将自己的姓名写下来。工作表也会计算各种统计数据。
不同地方的工作表将被命名为特定笔记本的名称。名称注册表通过引用特定名称的单元格来保存我们的编写和修复。
我确定不会像255张一样(这应该是新表格中提升的限制),但我想到了如何让它自动化:
1) Optionally a new sheet is added and the spreadsheet notices it.
2) Once either
2.1) the new sheet is renamed, the `Name registry` will auto-name one of the free columns as the renamed sheet; or
2.2) an old sheet is renamed, the sheet's old column is renamed in the `Name registry`
我确实检查了一些事情,但坦率地说,文档是无脑的,所以唯一的选择就是在自己的资源上使用Google。
例如,https://developers.google.com/apps-script/understanding_events意味着它无论如何都无法完成。
答案 0 :(得分:0)
你应该知道插入一张纸时确实会触发一个触发器(我猜你所说的是#34;表格#34;在你的问题中)。
重新检查spread sheet Change event的文档,此事件仅在您使用已安装的触发器时触发。使用它(从docs复制)
请注意,此触发器与简单的onEdit触发器不同。
另外,请记住您的回调函数必须接收事件参数:
function myFunction(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.getSheetByName("Sheet1").getRange("A1").setValue(e.changeType);
}
您会看到有不同类型的更改:EDIT,INSERT_ROW,INSERT_COLUMN,REMOVE_ROW,REMOVE_COLUMN,INSERT_GRID,REMOVE_GRID,OTHER。您正在寻找用于插入新工作表的 INSERT_GRID 和用于重命名的 OTHER 。
话虽如此,这里的问题是将一张纸的重命名检测为其他类型,因此当您不想这样做时,您可能很容易触发该功能(例如更改背景颜色,还使用OTHER编辑类型激活onChange事件。我的建议是,您不会尝试检测创建/更改,但会创建自定义菜单条目来处理工作表的创建和重命名:
function onOpen()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [ {name: "Create sheet", functionName: "createNewSheet"},
{name: "Rename current Sheet", functionName: "renameCurrentSheet"}
];
ss.addMenu("Custom operations", menuEntries);
}
function createNewSheet()
{
// create the new sheet
// also execute the logic you want when new sheet is created
}
function renameCurrentSheet()
{
// rename current sheet
// also execute the logic you want when sheet is renamed
}
希望我对你的问题有所启发。