如何使用新的 Apps 脚本编辑器测试 Google Docs 的编辑器插件?

Posted

技术标签:

【中文标题】如何使用新的 Apps 脚本编辑器测试 Google Docs 的编辑器插件?【英文标题】:How to test an editor add-on for Google Docs with the new Apps Script editor? 【发布时间】:2022-01-24 01:32:58 【问题描述】:

我正在尝试为我制作的 Google Docs 测试一个简单的插件,但似乎 this page of documentation 与旧版 Apps 脚本编辑器有关,我不知道如何处理新版 Apps脚本编辑器。

    我已阅读此topic,但他正在尝试部署 Workspace 插件(与编辑器插件不同) 我知道我可以简单地将我的代码复制粘贴到直接绑定到 Google Docs 的 Apps 脚本中,但这不是我想要的,我真的希望我的附加代码在它自己的、独立的 Apps 脚本项目中。 我的 Apps 脚本项目已链接到适当的 GCP 项目(计费和 oauth 同意屏幕正常)

我的代码,如果有帮助的话

const PASS = "PASSPHRASE";

function decrypt(text) 
  var cipher = new cCryptoGS.Cipher(PASS, 'aes');
  return cipher.decrypt(text)


function encrypt(text) 
  var cipher = new cCryptoGS.Cipher(PASS, 'aes');
  return cipher.encrypt(text)


function decryptDocument() 
  var doc = DocumentApp.getActiveDocument();
  var paragraphs = doc.getBody().getParagraphs();
  return paragraphs.reduce((previous, current) => 
    return previous + "\n" + decrypt(current.getText());
  , ""); 


function onOpen() 
  DocumentApp.getUi()
      .createMenu('Décodeur')
      .addItem('Lancer le décodeur', 'showSidebar')
      .addToUi();


function showSidebar() 
  var html = HtmlService.createHtmlOutputFromFile('decoder')
      .setTitle('Décodeur');
  DocumentApp.getUi().showSidebar(html);

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <button onclick="decrypt()">Décoder le contenu</button>
    <div id="decodedText">
      </div>
  </body>
  <script>
    var running = false;

    function onSuccess(decodedText) 
      running = false;
      document.getElementById("decodedText").innerHTML = decodedText;
    

    function onFailure(e) 
      running = false;
      console.error(e);
    

    function cleanDiv() 
      document.getElementById("decodedText").innerHTML = "";
    

    function decrypt() 
      running = true;
      google.script.run.withSuccessHandler(onSuccess)
        .withFailureHandler(onFailure)
        .decryptDocument();
    
    </script>
</html>

  "timeZone": "America/New_York",
  "dependencies": 
    "libraries": [
      
        "userSymbol": "cCryptoGS",
        "version": "4",
        "libraryId": "1IEkpeS8hsMSVLRdCMprij996zG6ek9UvGwcCJao_hlDMlgbWWvJpONrs"
      
    ]
  ,
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8"

【问题讨论】:

有什么问题? 看来你漏掉了这部分:“注意:你必须使用旧版编辑器来测试Editor Add-ons。要从新编辑器切换到旧版编辑器,请点击顶部的使用旧版编辑器编辑器屏幕。” 天哪,我讨厌那些蓝色背景的音符,我从来没有见过它们...... 【参考方案1】:

彻底测试编辑器插件的唯一方法是使用 Google Workspace SDK 发布。

如果您想使用 Google Apps 脚本的“测试为插件”功能,您必须使用旧版编辑器。这可能适用于测试 onOpen 简单触发器等一些功能,但不适用于测试可安装触发器等其他功能。

显然您的编辑器插件没有使用可安装的触发器和其他无法使用“作为插件测试”测试的功能,它很可能足以测试您的插件的简单触发器 -开。

附:您的插件缺少 onInstall 简单触发器,该触发器通常用于在从打开的文档安装插件时调用 onOpen 触发器。

相关

Installable Trigger Failing with Test Add-On Is "Test as add-on" for Google sheets editor add-ons broken? Testing Google Sheet Addon Triggers

【讨论】:

以上是关于如何使用新的 Apps 脚本编辑器测试 Google Docs 的编辑器插件?的主要内容,如果未能解决你的问题,请参考以下文章

在 iFrame 中嵌入 Google Apps 脚本

如何保护 Google 电子表格中的 Apps 脚本代码?

如何使用google apps脚本在自定义函数中编辑自定义函数的调用单元格?

离线使用Google Apps Scripts

外部编辑器支持Google Apps脚本

如何在google-apps-script上恢复已撤销的权限?