我正在尝试使用来自Romain Vialard和James Ferreira的书(已修改)的Google Apps脚本建议框库在我的Google电子表格中添加自动填充功能(电子表格中弹出窗口中的Ui):
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "my_sheet" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
if( r.getColumn() == 1) {
var names = ["Adam", "Peter", "Benjamin", "Ceaser", "Prometheus", "Gandi", "Gotama", "Mickey Mouse"];
var app = UiApp.createApplication();
var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, names);
app.add(suggestBox);
SpreadsheetApp.getActive().show(app);
var dataCell0 = r.offset(0, 1);
var dataCell0 = r.offset(0, 1);
if( dataCell0.getValue() == '' )
otherTestTunction();
}
}
}
但是当我开始编辑“my_sheet”的第1列并且出现Ui框时,会发生此自动化错误(在我的语言中它说:“您必须有权执行此操作”):
文档说onEdit()触发“他们无法访问任何需要身份验证的服务。例如,Google Translate服务是匿名的,可以通过简单的触发器访问.Google日历,Gmail和网站是不是匿名的,简单的触发器无法访问这些服务。“
由于我没有使用ContactsApp
,我认为建议框库需要授权。
如何在要求授权的编辑触发器上设置可安装程序? (你能给我一些代码示例吗?)
以下是我的测试电子表格:https://docs.google.com/spreadsheet/ccc?key=0AtHEC6UUJ_rsdFBWMkhfWUQ0MEs2ck5OY1BsYjRSLXc&usp=drive_web#gid=0
答案 0 :(得分:2)
出于对图书馆所需授权的建议我对新表进行测试的好奇心,下面的确切代码要求电子表格访问,仅此而已。
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
var names = ["Adam", "Peter", "Benjamin", "Ceaser", "Prometheus", "Gandi", "Gotama", "Mickey Mouse"];
var app = UiApp.createApplication();
var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, names);
app.add(suggestBox);
SpreadsheetApp.getActive().show(app);
var dataCell0 = r.offset(0, 1);
}
要处理你只需要让你的用户在你的脚本中运行一个函数(无论什么功能),他们将得到以下弹出窗口:
在此初始步骤之后,您的功能将按预期工作,即Ui将显示。
除此之外,我不确定我理解你想要实现什么是可行的,onEdit触发器在编辑完成时触发,这意味着在你点击ENTER之后,则不考虑suggestBox中的值。此外,你必须在UI中处理任何事情,所以我仍然想知道你对这段代码的期望是什么? (什么是理想的是在spreadsheetApp中的onClick事件,但遗憾的是它到目前为止还不存在......)
但也许我错过了一些明显的东西。
关于您在帖子中提到的可安装的onEdit,您应该注意它不需要由最终用户授权,因为它将作为您运行,创建触发器的人而不是访问SS的用户因此,访问您自己的数据,而不是用户的数据......这可能是一个不可忽略的限制(正如之前评论中提到的Zig ......)