应用程序脚本加载项事件处理程序不工作



我正在为谷歌电子表格创建一个插件。当点击搜索按钮时,似乎什么都没有发生。如何调试它?

我正在使用谷歌应用程序脚本来创建插件。我使用的是QuickStart的示例,其中有一些更改以反映我的需求。

这是我的代码

<div class='sidebar branding-below'>
  <form>
         <div class="block col-contain">
                 <div class="block form-group">
                   <div>
                     <label for="Query-txt"><b>Query Term</b></label><br/>
                     <input type="text" name="querytxt" id="Query-txt" value="" class="width-100" />
                   </div>
                   <br/>
                   <div>
                     <label for="Channel-id-dd"><b>Channel</b></label><br/>
                     <select id="Channel-id-dd" class="width-100">
                         <option value="UCpZG4Vl2tqg5cIfGMocI2Ag">CFC India</option>
                         <option value="UCPPkrC9R5ED2R2JRTaQgETw">NCCF Church</option>
                         <option value="UCL8wQnv6qB7rZtEYfY3vPtw">River of Life Christian Fellowship</option>
                     </select>
                   </div>
                   <br/>
                   <div>
                     <label for="Region-Code-dd"><b>Country Code</b></label><br/>
                     <select id="Region-Code-dd" class="width-100">
                         <option value="AU">AU - Australia</option>
                         <option value="GB">GB - United Kingdom</option>
                         <option value="US">US - USA</option>
                         <option value="UAE">UAE - United Arab Emerates</option>
                     </select>
                   </div>
                   <br/>
                   <div>
                     <label for="Safety-Type"><b>Safety</b></label><br/>
                     <select id="Safety-Type" class="width-100">
                         <option value="moderate">moderate</option>
                         <option value="strict">strict</option>
                         <option value="none">none</option>
                     </select>
                   </div>
                   <br/>
                   <div class="block" id="button-bar">
                     <button class="blue" id="run-Query">Search</button>
                   </div>
                 </div>
         </div>
  </form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
 $(document).ready(function (){
    $('#run-Query').click(function () {
    Logger.log("Starting");
    var query = $('#Query-txt').val();
    var channelid = $('#Channel-id-dd').val();
    var countryCode = $('#Region-Code-dd').val();
    var safety = $('#Safety-Type').val();
    google.script.run
        .withSuccessHandler(
          alert("success");
        )
        .withFailureHandler(
          alert("failure");
        )
        .withUserObject(this)
        .search_all(query, safety, channelid, countryCode);
    Logger.log("Complete");
  });
 });
</script>

我发现您的代码有两个问题。首先,Logger.log()是一个AppsScript服务器端方法。它被设计为从服务器端代码调用,例如在code.gs文件中。上面所写的是在最终用户的浏览器上执行的客户端javascript。要在这里登录,您可以执行与常规javascript编程相同的操作,而是使用console.log()方法。这将把日志记录语句写入javascript控制台(可通过Chrome中的Ctrl+Shift+J访问)。

其次,withSuccessHandler和withFailureHandler将在成功和失败场景中调用的方法作为参数,而不使用参数。您定义的方法将自动获取参数。注意它们是如何在Quickstart:中使用的

...
.withSuccessHandler(
    function(returnSuccess, element) {
        element.disabled = false;
})
...

为了提醒成功,就像你上面所说的,你需要使用这样的东西:

...
.withSuccessHandler(
    function(returnVal, element) {
        alert("Call was successful with return value: " + returnVal);
    }
)
...

使用这两种方法,您应该拥有调试代码所需的工具。

相关内容

  • 没有找到相关文章

最新更新