javascript - Google Apps 脚本 - 将应用程序脚本函数的输出返回到 html 文件 javascript 函数
问题描述
好的,所以我试图在谷歌表格中创建一个函数,当用户选择一个单元格然后运行该函数(当前正在尝试创建)时,应该出现一个获取该单词所有同义词的侧边栏。我正在使用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();
推荐阅读
- scala - 当我将对象放入值时,scala Map中的编译时间错误
- c# - 用于 CRM REST 的 .NET Standard 2.0 Nuget 包
- asp.net-mvc - 如何在 ASP.NET、C# 和实体框架应用程序中使用两个数据库上下文
- javascript - 是否有可能的 javascript 函数返回新的 DOM 元素但使用 jQuery 创建
- qt - 使用opencv和ffmpeg dylib错误部署QT项目
- python - 生成两个不同的随机数列表
- amazon-web-services - 将 git hash 映射到已部署的 lambda
- autohotkey - 这个脚本中的什么导致我的窗口最小化?
- javascript - UIkit 垂直导航栏菜单
- json - TypeScript:如何使用“resolveJsonModule”标志而不发出“.json”文件?