【问题标题】:Google Script Error: You do not have permission to call openByIdGoogle 脚本错误:您无权调用 openById
【发布时间】:2014-03-26 14:31:56
【问题描述】:

我正在尝试使用以下 google 脚本发送附有我的 google 驱动器中可用文件的邮件

var file=DriveApp.getFileById('1qZVK0UZ1jLbDdj10FXZqeAVEodvxEy2Bs');
MailApp.sendEmail('xyz@gmail.com','subject','body',{attachments[file.getAs(MimeType.PDF)]});

当我手动运行上面的脚本时,它运行良好,电子邮件被发送。但是当我使用表单提交触发器运行它时,它会给出错误“您无权调用 openById”

会重现问题的步骤?

  1. 创建一个谷歌表单。
  2. 在脚本编辑器上编写上述脚本,并在提交表单时添加触发器。
  3. 填写并提交表单,然后您将收到来自“apps-scripts-notifications@google.com”的邮件中的上述错误

请帮忙。

【问题讨论】:

    标签: google-apps-script google-forms gs-installable-triggers


    【解决方案1】:

    我遇到了同样的问题,但觉得必须使用 FormResponses Sheet 来获取提交事件有点傻(我的意思是 Form Apps Scripts 上有一个触发器是有原因的,对吧?)。

    我所要做的就是删除并重新添加 From form --> On form submit 的触发器。当我添加它时,向我挑战 OAuth 权限以查看和使用我的谷歌驱动器。

    紧接着,我能够再次在 Forms Apps 脚本提交触发器上运行。

    【讨论】:

      【解决方案2】:

      我在表单本身上创建脚本时发现了这一点。

      要解决问题,请先将回复发送到电子表格。

      从你的表单转到工具>脚本编辑器...复制你的脚本并删除你在那里设置的所有触发器,你将不再需要这个脚本了。

      现在点击表单中的查看回复按钮以打开电子表格。

      • 转到工具>脚本编辑器...(用于电子表格)。
      • 您应该从一个空白项目开始。
      • 删除其中的任何内容并粘贴到您的脚本中。
      • 保存并命名您的项目。

      现在正常设置触发器。您会发现新触发器的第三个下拉列表有选项On form submit

      一旦您的脚本在提交表单时获得授权,该事件就会触发,并且可以访问 DriveApp。

      一旦您进行了测试并使其正常工作,我将返回表单并删除其中的脚本项目。我这样做是为了让事情保持整洁并避免在我稍后更改脚本并且忘记哪个实际是现场直播时产生混乱。

      我不知道 Google 表单是否存在限制他们访问云端硬盘或其他内容的限制。

      【讨论】:

        猜你喜欢
        • 2015-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多