【发布时间】:2020-06-17 22:41:55
【问题描述】:
我有一个自定义函数,可以复制电子表格中的工作表并重命名它。我尝试使用触发器 onOpen 但它在谷歌表格应用程序(android)上不起作用。我还尝试创建一个网络应用程序以使其在应用程序上执行此操作,但它也不起作用。函数如下:
function doGet() {
return HtmlService.createHtmlOutputFromFile("index.html")
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function onOpen() {
var activeSSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = activeSheet.getSheetByName('Sheet0');
sheet.copyTo(activeSSheet).setName('Sheet1').activate();
//duplicate.setName('Sheet1');
}
以及 HTML 代码:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function redirect() {
window.open("SPREADSHEETLINK","SPREADSHEETNAME");
google.script.run.onOpen();
}
</script>
</head>
<body onload="redirect()">
</body>
</html>
我在互联网上找到了这段代码并对其进行了修改。它可以在PC上运行,但在我的手机上它不起作用。我不知道这是否与应用程序本身的限制有关或与什么有关。我对编程有点陌生,所以我有点卡住了。
【问题讨论】:
-
尝试使用可安装的 onOpen 触发器
-
我尝试使用 onOpen 触发器。这是以前的样子,但它在应用程序中不起作用,实际上我记得当我打开它时,工作表被复制了,但后来它消失了。所以我不知道这是配置还是什么。
-
使用可安装触发器的要点是它们能够执行需要权限的操作。简单的触发器不能。
-
是的,我在这里检查过,我也尝试过,我再次这样做只是为了确保。所以这就是发生的事情:我在手机上打开了电子表格,由于某种原因,它反复通知我“所有文件现在都可以离线使用”。我创建了这个函数并将它添加到我的触发器中,这是一个可安装的触发器,对吧?
-
好吧,现在我看起来更近了一点,我建议不要那样使用 onOpen。它旨在响应简单的触发器。我认为您应该使用 SpreadsheetApp.GetActive() 或 SpreadsheetApp.openById(),如果您使用的是移动设备,您可能应该通过我们的应用程序访问。
标签: google-apps-script google-sheets triggers