google-apps-script - 从 Rhino 切换到 V8 导致错误代码 PERMISSION_DENIED

标签 google-apps-script v8 google-apps-script-addon google-slides google-apps-script-runtime

最近我从 Rhino 切换了我的谷歌幻灯片脚本运行时至 V8 .我测试了我的附加组件,但出现错误:

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.


我的脚本使用 PropertiesService.getUserProperties() .我发现我必须从我的谷歌帐户注销并再次登录,它工作过 .
我可以想象这对于使用此附加组件的其他用户来说也可能是痛苦的。有没有其他方法可以解决这个错误?appscript.json配置
{
  "timeZone": "Europe/Bratislava",
  "runtimeVersion": "V8",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER"
}
此外,我正在使用 clasp 在我的 PC nad 上开发附加本地化将代码推送到 App 脚本。
更新
我创建了最小的项目来重现这个错误,我发现 PropertiesService.getUserProperties()不是问题。原来从 Rhino 切换后至 V8 ,我无法调用任何 appscript 函数。
// Code.gs
function onInstall(event) {
    onOpen(event);
}

function onOpen(event) {
    SlidesApp.getUi().createAddonMenu()
        .addItem('Open the sidebar', '_showSidebar')
        .addToUi();
    _showSidebar();
}

function _showSidebar() {
    var ui = HtmlService
        .createHtmlOutputFromFile('index')
        .setTitle('Test add-on');
    SlidesApp.getUi().showSidebar(ui);
}

function getCurrentSlideObjectId() {
    var page = SlidesApp.getActivePresentation().getSelection().getCurrentPage();
    if (page && page.getPageType() === SlidesApp.PageType.SLIDE) {
        return page.getObjectId();
    }
    return null;
}
带模板:
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    
    <script>
       const onButtonClick = () => {
         google.script.run
          .withSuccessHandler(success)
          .withFailureHandler(error)
          .getCurrentSlideObjectId()
       }
       const success = (currentSlideObjectId) => {
         console.log("It works!", currentSlideObjectId);
       }
       const error = (error) => {
         error = typeof error === 'string' ? new Error(error) : error;
         console.error(typeof error === 'object' && error !== null ? error.message : error);
       }
    </script>
  </head>
  <body>
    <button onclick="onButtonClick()">Click me</button>
  </body>
</html>
目前,我使用 2 个不同的帐户登录了我的谷歌驱动器。在与 Google chrome 登录不同的 acc 上测试附加组件时,会出现错误。

We're sorry, a server error occurred while reading from storage. Error code PERMISSION_DENIED.

最佳答案

这是 Google IssueTracker 的一个已知问题 an add-on can lead to PERMISSION_DENIED under certain conditions ,您可以继续点击 +1以增加问题的知名度。如 Rubén说,这个问题也可以关注multiple logged users所以继续使用 +1如果您的场景与该线程类似。

关于google-apps-script - 从 Rhino 切换到 V8 导致错误代码 PERMISSION_DENIED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615196/

相关文章:

javascript - 为什么绑定(bind)比闭包慢?

javascript - 为什么应用 JSON.stringify 会占用这么多内存?

google-apps-script - 无法在 "grant permissions"对话框中为 Google Apps 脚本插件设置项目名称

google-apps-script - 如何在谷歌文档插件中的文本悬停上显示图像

javascript - 使用 Google-Apps-Script 上预定义的组形成集群

javascript - 按每个单元格的单词数从最多到最少的 Google 脚本对列进行排序

javascript - 浏览器是否总是将 Javascript 中的字符串和数字视为不可变的?

google-apps-script - 以前工作的脚本现在与 onOpen 和 onInstall 有问题;事件并不总是触发

javascript - Google 表格上的提交按钮

javascript - 我无法通过谷歌脚本发送带有 pdf 作为附件的电子邮件