【问题标题】:Allow editor to trigger script in google sheet which opens a google form允许编辑器在打开谷歌表单的谷歌表中触发脚本
【发布时间】:2018-03-20 11:40:51
【问题描述】:

您好,按照 Tanaike 的回答 here,我能够成功地将表单实现到我的谷歌工作表中的弹出窗口中,但是当另一个用户(我设置为编辑器)尝试打开这个弹出窗口时,我得到了此错误消息:

“您无权执行该操作。请请求此项目的所有者授予您访问权限。”

目前尚不清楚如何授予第二个用户进一步的访问权限,因为他已被设置为编辑器。

这是我触发的脚本:

function launchForm() {
  var formTitle = '';
  var formID = '14uZANF9q3FKQvfLD1Qx-enYdeQ_pxzORTeHwSSKtHOk';
  var form = FormApp.openById(formID);
  var formUrl = form.getPublishedUrl();
  var htmlApp = HtmlService
  .createHtmlOutput('<script>location.href = "' + formUrl + '"</script>')
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setTitle(formTitle)
  .setWidth(900) 
  .setHeight(750);
  SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}


function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Launch Form",
    functionName : "launchForm"
  }];
  sheet.addMenu("Custom Menu", entries);
};

【问题讨论】:

    标签: javascript google-apps-script google-forms google-sheets-api


    【解决方案1】:

    我实际上找到了解决我问题的替代方案。如果有人遇到同样的问题,这就是我所做的:

    function myForm() {
      var html = HtmlService.createHtmlOutputFromFile('myForm')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
      SpreadsheetApp.getUi()
      .showModalDialog(html, 'Hello');
    }
    

    并创建了一个 HTML 文件:

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
    <iframe src="..." width="500" height="500" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>  </body>
    </html>
    

    注意:当您在 Google 表单中编辑表单时可以找到 iframe 标签 > 并点击发送 > 点击标签嵌入 HTML

    【讨论】:

    • 您的同事无法运行您的脚本的原因是他们没有查看您表单的权限。他们需要这个才能使用FormApp.openById() 打开应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多