Google 脚本:编辑者无法将边栏中的数据保存到工作表中



HTML侧边栏获取用户输入并将其保存在工作表中:

  1. 与工作表的所有者,它工作得很好(侧边栏中的数据是正确保存在图纸中(
  2. 对于其他工作表编辑器,侧边栏中的数据不会保存在工作表中

同一域的所有者和用户应用程序脚本面板显示无错误

如果能为我解决这个问题提供任何帮助,我将不胜感激。

侧边栏来源:

<!DOCTYPE html>
<html>
<!-- Style should be in the head -->
<style>
    .info {
        margin: 5px;
        width: 95%;
        padding: 2px;
        font-size: 14px;
        font-weight: bold;
    }
    .msg {
        margin: 5px;
        width: 95%;
        padding: 2px;
        font-size: 13px;    
    }
    .container,
    .buttons {
        margin: 5px;
        width: 95%;
        padding: 2px;
        font-size: 13px;
    }
</style>
<head>
    <base target="_top">
    <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
</head>
<body>
    <div class="msg"> 
      <p align="justify">Marque todos os motivos que levaram ao indeferimento do requerimento</p>
    </div>
    
    <div class="info">
      <p id="stdname"></p>
      <p id="stamp"></p>
      <p id="applied"></p>
      <p id="eRange"></p>
    </div>
    
    <div class="container">
      <?!=rngValid?>
    </div>
    
    <div class="buttons">
      <p>
        <button class="action" id="action" onclick="saveReasons();">Salvar motivos</button>
      </p>
      <br>             
    </div>
    <!-- These should be in the head. They should be there prior to page loading-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.rawgit.com/mdehoog/Semantic-UI/6e6d051d47b598ebab05857545f242caf2b4b48c/dist/semantic.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/semantic.min.js"></script>
    
    <script>
      var stamp    = <?= stamp ?>;
      var to       = <?= to ?>;
      var subject  = <?= subject ?>;
      var stdName  = <?= stdName ?>;
      var apply    = <?= apply ?>;      
      var eRange   = <?= eRange ?>;
      
      document.getElementById("stdname").innerHTML = stdName;
      document.getElementById("stamp").innerHTML   = stamp;
      document.getElementById("applied").innerHTML = apply;
      document.getElementById("eRange").innerHTML  = eRange;
      
      function saveReasons() {
        var selected = [];
        //get all checkboxes
        var checkboxes = document.getElementsByClassName("ui.checkbox");
        console.log("checkboxes length: "+ checkboxes.length);
        console.log("checkboxes: "+ checkboxes);
            $("input:checkbox[name=sel]:checked").each(function() {
              selected.push($(this).val());
              $(this).prop( "checked", false ); 
            })
        console.log("selected: "+ selected);
        console.log("eRange: "+ eRange);
        
        google.script.run
          .withFailureHandler(() => {console.log("Error running script")})
          .process(selected,stdName, apply, eRange);
      }
    </script>
</body>
</html>

开发工具控制台:

Net state changed from IDLE to BUSY           386795301-warden_bin_i18n_warden.js:67
Net state changed from BUSY to IDLE           userCodeAppPanel:36
Error running script

在客户端代码中有以下

google.script.run
      .withFailureHandler(() => {console.log("Error running script")})
      .process(selected,stdName, apply, eRange);

上面代码的问题是,它对调试主要问题的帮助很低。

要获得有意义的错误消息,请更换

.withFailureHandler(() => {console.log("Error running script")})

.withFailureHandler((error) => {console.log('%s, %s',error.message, error.stack)})

最新更新