首页 > 解决方案 > google.script.run 不运行 Code.gs 中的函数

问题描述

我正在尝试在我的工作表中创建一个带有应该运行功能的按钮的 html 框。

我已经简化了代码以隔离问题,我所做的似乎有问题。

使用以下代码,创建了 html 输出,按钮做出反应,因为警报有效,但 code.gs 中的函数没有运行。Executions 显示 htmlBox() 已完成,但没有 returnYes() 的踪迹

请问你能帮帮我吗 ?

代码.gs

function htmlBox(){

var htmlOutput = HtmlService
    .createHtmlOutputFromFile("box")
    .setWidth(200)
    .setHeight(50);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, "Try to make work this button");

}

function returnYes(){

  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
  var value = "yes!";
  
  ws.getRange(1, 1).setValue(value);
    
  } 

盒子.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    
    <div>
      <button id="btn">Run It!</button>
    </div>
    
    <script>
      
      document.getElementById("btn").addEventListener("click",buttonClicked);
    
      function buttonClicked() {
      
      alert("Button clicked");
      google.script.run.returnYes();
            
      }

    </script>
  
  </body>
</html>

标签: google-apps-scriptgoogle-sheets

解决方案


编辑:以下代码不能解决上述问题

问题是 Code.gs 中缺少 doGet 函数。

通过添加它现在可以工作。

代码.gs

function doGet() {
  return HtmlService.createHtmlOutputFromFile("box");

function htmlBox(){

var htmlOutput = HtmlService
    .createHtmlOutputFromFile("box")
    .setWidth(200)
    .setHeight(50);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, "Try to make work this button");

}

function returnYes(){

  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
  var value = "yes!";
  
  ws.getRange(1, 1).setValue(value);
    
  }

感谢@Baby_Boy 提供解决方案。


推荐阅读