Google Apps 脚本 - return 从应用程序脚本函数输出回 html 文件 javascript 函数

Google Apps Script - return output from apps script function back to the html file javascript function

好的,所以我试图在 google 工作表中创建一个函数,当用户选择一个单元格然后运行该函数(目前正在尝试创建)时,侧边栏会获取该词的所有同义词应该出现。我正在使用 https://words.bighugelabs.com/ 来获取同义词。所以首先我制作菜单:

`function onOpen(e) {
  var ui = SpreadsheetApp.getUi().createMenu("Sidebar")
  .addItem("Get Synonym", 'showSidebar')
  .addToUi();
}`

然后这是 showSidebar 函数:

function showSidebar() {
      var html = HtmlService.createHtmlOutputFromFile("Test")
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .setWidth(150)
      .setTitle("My Sidebar");
      SpreadsheetApp.getUi().showSidebar(html);
    }

这是 html 文件:

<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>

function doSomething() {
var synonyms = google.script.run.getSynonym();
document.getElementById("synonyms").innerHTML = synonyms;
}

</script>
</head>
<body>
<div>
<span style="color:orange;">This is a test sidebar!</span>
<button onclick="doSomething()">Click Me!</button>
<div id="synonyms"></div>
</div>
</body>
</html>

这是 getSynonym 函数:

function getSynonym() {
  var word = SpreadsheetApp.getActiveRange().getValue();
  var synonyms = [];
  var response = UrlFetchApp.fetch("http://words.bighugelabs.com/api/2/{my_api_key}/" + word + "/json");
  response = JSON.parse(response);
  var synonyms = response.adjective.syn;
  return synonyms;
}

但是作为同义词数组的变量同义词不会返回到 Html 文件中的 doSomething 函数。

我想要的是侧边栏应该得到所有同义词的列表。 所以基本上我无法将数据从一个函数获取到另一个......我想知道这是否是正确的方法。

使用 google.script.run 调用服务器端函数时,您需要定义一个成功处理程序,它将异步接收您的响应。

查看示例:https://developers.google.com/apps-script/guides/html/communication

  function onSuccess(synonyms ) {
    console.log(synonyms);
  }

  google.script.run.withSuccessHandler(onSuccess).doSomething();