我为电子表格编写了这个脚本:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('My - Menue')
.addItem('Menue auf Deutsch','DescGerman')
.addItem('Menue in English','DescEnglish')
.addToUi();
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
}
脚本正在运行并创建菜单 - 但不多了。我的menue的第二部分不会运行,所以我没有得到新的触发器。
有没有人知道或对我有什么问题?
答案 0 :(得分:0)
问题是您在初始化应用程序之前尝试运行需要权限的脚本(SpreadsheetApp类和ScriptApp类将导致此问题)。 尝试不同的东西。
让菜单做的事
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('My - Menue')
.addItem('Menue auf Deutsch','DescGerman')
.addItem('Menue in English','DescEnglish')
.addToUi();
}
在侧栏中
然后当侧栏/对话无论打开电话然后调用下一个脚本。
document.addEventListener("DOMContentLoaded", function() {
google.script.run.nextCode();
});
在Code.gs
function nextCode(){
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
}
答案 1 :(得分:0)
好的,我更新了表格中的代码。现在,每次进行更改时,第二张工作表都会附加一个时间戳,因为安装了一个触发器。通过单击菜单项DescGerman安装触发器。希望这是有帮助的。
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('My - Menue')
.addItem('Menue auf Deutsch','DescGerman')
.addItem('Menue in English','DescEnglish')
.addToUi();
document.addEventListener("DOMContentLoaded", function() {google.script.run.nextCode();
});
}
function DescGerman(){
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
}
function myFunction(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Tabellenblatt2')
var time = new Date
sheet.appendRow([time])
}