【问题标题】:Google sheets add-on, not working properly after publishing谷歌表格插件,发布后无法正常工作
【发布时间】:2020-05-28 02:02:24
【问题描述】:

我为其他人创建了一个 google 表格插件,他们需要其 Gsuite 组织中的其他人也能够使用该插件。该插件在测试和开发过程中按预期工作,但当我们发布它时,它仅适用于发布它的帐户。当其他人尝试使用它时,它无法正常工作。它有一些功能,但没有其他功能,我无法确定发生了什么。

我一直在谷歌上搜索,遵循指南并尝试了几个小时,但无法弄清楚这一点。我相信我已经添加了所有需要的范围,并启用了所有的 api,但是我是新手,所以 idk?

很抱歉,如果这是一个非常含糊且没有经过深思熟虑的问题,但我真的需要帮助并且真的不知道还能去哪里。非常感谢任何帮助

[用代码编辑] 附加组件出现在市场中并且可以安装。它显示了菜单和侧边栏,但侧边栏中没有任何按钮真正起作用。我认为这是附加组件和发布的问题,而不是代码本身的问题,但我想这就是我在这里问的原因...... https://codepen.io/garrettarh/pen/abvgmKJ 我在 chrome 控制台中收到此错误:

Uncaught     (string of numbers)-mae_html_user_bin_i18n_mae_html_user.js:54

我知道这不是很漂亮,但我是 Gsuite 和 App Script 的新手,只是找到了一些有用的东西。优化并不是真正的首要任务。

[使用范围编辑]

[使用变通方法编辑] 我遇到了这个问题Uploading a file using an HtmlService form in Google Apps always causes "server error" and a stack trace

有人建议使用 STABLE 作为运行时版本而不是 V8,到目前为止,我相信这已经解决了我的问题。我不够精明,无法确切知道出了什么问题。

【问题讨论】:

  • 是的,这个问题非常模糊,chrome 控制台可能包含与您的插件无关的错误消息。
  • 你的插件有动态菜单吗?您使用的是简单的还是可安装的触发器?插件用户是从电子表格插件菜单还是从 G Suite Marketplace 安装插件?插件是由个人安装的还是为整个域安装的?
  • 好吧,在发布之前我没有收到那个错误。当按下我侧边栏上的按钮时,它会显示出来。 (按钮不是唯一损坏的功能)然后该按钮运行 Google 脚本功能。该插件是在一个 gsuite 组织内部发布的。该插件有一个菜单。正在从组织的 gsuite 市场插件菜单安装插件,但不是通过整个域安装。
  • 好吧,你什么时候分享你所有的代码?
  • mae_html_user_bin_i18n_mae_html_user.js 这个文件是附加代码的一部分吗?对于其他人的帮助,通常需要查看代码,或者能够重现错误。根据提供的信息,两者都不可能。

标签: google-apps-script google-sheets web-applications google-workspace


【解决方案1】:

我不确定这是否会产生任何影响,但我将 HTML 中的脚本更改为:

<html>
  <head>
    <base target="_top">
    <link href="https://ssl.gstatic.com/docs/script/css/add-ons.css" rel="stylesheet">
    <style>
    #title {
    color: #54AE54 !important;
    font-size: 18px;
    padding: 6px;
    }
    #runScript {
    background: #54AE54 !important;
    color: #F1FFE7;
    margin: 20px;
    }
   
    body {
    background: white;
    text-align: center;
    }
    .outline {
    outline-style: double ;
    outline-color: #968E85 ;
    padding: 10px;
    }
    
    .smallH {
    margin-block-start: 0.8em;
    margin-block-end: 0.8em;
    }
    .range {
    width: 45%;
    display: inline-block;
    padding: 5px;
    }
    #classesRange:disabled {
    color: gray;
    }
    #emailRange:disabled {
    color: gray;
    }
    </style>
  </head>
  
  
  
  <body>
  <div class="outline">
    <h1 id="title">Course Choice ID Match</h1>
    <hr class='solid'>
    <h2>Input Sheet</h2>
    <select name="Input Sheet" id="inputSheetDD">
       <option value="" disabled selected hidden>Choose an input sheet</option>
       <? var sheets=SpreadsheetApp.getActive().getSheets(); ?>
       <? for (var i=0;i<sheets.length;i++) { ?>
       <option value=<?=sheets[i].getName()?>> <?= sheets[i].getName()?></option>
       <? } ?>
    </select>
    <? var sheets=SpreadsheetApp.getActive(); ?>
    <h2>Input Columns</h2>
    <div class="range">
    <h4>Email Columns</h4>
       <input type="text" placeholder="type cell range" id="emailRange" size="12"?>
       <h5 class="smallH">OR...</h5>
       <button id="emailButton">Get Selected Range</button>
    </div>
    <div class="range">
       <h4>Classes Columns</h4>
       <input type="text" placeholder="type cell range" id="classesRange" size="12"?>
       <h5 class="smallH">OR...</h5>
       <button id="classesButton">Get Selected Range</button>
    </div>
    <h2>Output</h2>
    <h5 class="smallH">Output Sheet Name</h5>
    <input type="text" placeholder="name output sheet" id="outputName">
    <h5 class="smallH">Creator ID</h5>
    <input type="text" placeholder="type creator ID #" id="creatorID">
    <button id="runScript">Run Script</button>
   </div>
    
    
    
    <script>
    function onSuccess(activeRange) {
       if (window.buttonClicked == 'classesButton') {
          classesRange.value = activeRange;
          classesRange.disabled = false;
       }
       if (window.buttonClicked == 'emailButton') {
          emailRange.value = activeRange;
          emailRange.disabled = false;
       }
    }
    
    window.onload = function() {
      var buttons = document.getElementsByTagName("button");
    
      console.log("buttons.length: " + buttons.length)
      
      for (var i = 0; i <= buttons.length; i += 1) {
        var thisBtn = buttons[i];
        
        if (!thisBtn) {
          return;
        }
        
        console.log('thisBtn.id: ' + thisBtn.id)
        var thisID = thisBtn.id;
          
        switch(thisID) {
        
          case 'classesButton':
            console.log('its classesButton')
            thisBtn.addEventListener("click", function() {
              window.buttonClicked = this.id;
              document.getElementById("classesRange").disabled = true;
              document.getElementById("classesRange").value = "working...";
              google.script.run.withSuccessHandler(onSuccess).getSelectedRange();
             })
             
             break;
            case 'emailButton':
              console.log('its emailButton')
              
              thisBtn.addEventListener("click", function() {
                window.buttonClicked = this.id;
                document.getElementById("emailRange").disabled = true;
                document.getElementById("emailRange").value = "working...";
                google.script.run.withSuccessHandler(onSuccess).getSelectedRange();
               })
              break;
            case 'runScript':
              console.log('its runScript')
              
              thisBtn.addEventListener("click", function() {
                window.buttonClicked = this.id;
                var inputSheet = document.getElementById('inputSheetDD').value;
                var emailRange = document.getElementById('emailRange').value;
                var classesRange = document.getElementById('classesRange').value;
                var outputName = document.getElementById('outputName').value;
                var creatorID = document.getElementById('creatorID').value
                google.script.run.interpret(inputSheet, emailRange, classesRange, outputName, creatorID);
                })
                break;
            }
         }

        };
 
    </script>
  </body>
</html>

【讨论】:

  • 谢谢,您实际上解决了我在使用该代码时遇到的另一个问题。稍后我会让管理员添加此代码。
猜你喜欢
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2016-09-28
  • 2015-06-21
相关资源
最近更新 更多