如何修复此授权Google Apps脚本建议使用框库问题?

时间:2013-11-09 19:00:13

标签: autocomplete google-apps-script

我正在尝试使用来自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框时,会发生此自动化错误(在我的语言中它说:“您必须有权执行此操作”):

enter image description here

文档说onEdit()触发“他们无法访问任何需要身份验证的服务。例如,Google Translate服务是匿名的,可以通过简单的触发器访问.Google日历,Gmail和网站是不是匿名的,简单的触发器无法访问这些服务。“

由于我没有使用ContactsApp,我认为建议框库需要授权。

如何在要求授权的编辑触发器上设置可安装程序? (你能给我一些代码示例吗?)

以下是我的测试电子表格:https://docs.google.com/spreadsheet/ccc?key=0AtHEC6UUJ_rsdFBWMkhfWUQ0MEs2ck5OY1BsYjRSLXc&usp=drive_web#gid=0

1 个答案:

答案 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);
}

要处理你只需要让你的用户在你的脚本中运行一个函数(无论什么功能),他们将得到以下弹出窗口:

enter image description here

在此初始步骤之后,您的功能将按预期工作,即Ui将显示。

除此之外,我不确定我理解你想要实现什么是可行的,onEdit触发器在编辑完成时触发,这意味着在你点击ENTER之后,则不考虑suggestBox中的值。此外,你必须在UI中处理任何事情,所以我仍然想知道你对这段代码的期望是什么? (什么是理想的是在spreadsheetApp中的onClick事件,但遗憾的是它到目前为止还不存在......)

但也许我错过了一些明显的东西。

关于您在帖子中提到的可安装的onEdit,您应该注意它不需要由最终用户授权,因为它将作为您运行,创建触发器的人而不是访问SS的用户因此,访问您自己的数据,而不是用户的数据......这可能是一个不可忽略的限制(正如之前评论中提到的Zig ......)