具有动态参数的 Apps 脚本函数
Apps-script function with dynamic parameter
我正在测试应用程序脚本平台,在使用从 HTML 文件调用的这段代码时我有疑问:
JSON.parse(<?= JSON.stringify(getDataFromSheet("tyreUse", "valueSearched")); ?>);
如果我直接设置字符串值就可以了。
如果我尝试传递一个在其中声明的变量,它不会识别它。我如何像下一个示例一样将 JS 变量传递给应用程序脚本函数?
let value_searched = "cars";
JSON.parse(<?= JSON.stringify(getDataFromSheet("tyreUse", value_searched)); ?>);
<?= ?>
之类的 Scriptlet 在 html 模板中用于在呈现之前将数据从服务器加载到 html 页面。如果你想将数据传回服务器端函数,那么你可以使用 google.script.run 并且对你可以传递的数据类型有限制。
下面是一个从电子表格中动态获取数据的例子。我通常构建我的页面,然后使用 (function () {}());
形式的匿名函数从电子表格中获取数据并使用这些值填充 HTML 元素。
创建一个 HTML 文件 HTML_Demo:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<input id="A8SBwf" type="text">
<input id="gNO89b" type="button" value="Click Me" onclick="buttonOnClick()">
<script>
function buttonOnClick() {
try {
google.script.run.withSuccessHandler(
function(response) {
document.getElementById("A8SBwf").value = response;
}
).getCellA1();
}
catch(err) {
alert(err);
}
}
</script>
</body>
</html>
然后在 Code.gs 中创建 getCellA1:
function getCellA1() {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var range = sheet.getRange("A1");
return range.getValue();
}
catch(err) {
return err.message;
}
}
我正在测试应用程序脚本平台,在使用从 HTML 文件调用的这段代码时我有疑问:
JSON.parse(<?= JSON.stringify(getDataFromSheet("tyreUse", "valueSearched")); ?>);
如果我直接设置字符串值就可以了。 如果我尝试传递一个在其中声明的变量,它不会识别它。我如何像下一个示例一样将 JS 变量传递给应用程序脚本函数?
let value_searched = "cars";
JSON.parse(<?= JSON.stringify(getDataFromSheet("tyreUse", value_searched)); ?>);
<?= ?>
之类的 Scriptlet 在 html 模板中用于在呈现之前将数据从服务器加载到 html 页面。如果你想将数据传回服务器端函数,那么你可以使用 google.script.run 并且对你可以传递的数据类型有限制。
下面是一个从电子表格中动态获取数据的例子。我通常构建我的页面,然后使用 (function () {}());
形式的匿名函数从电子表格中获取数据并使用这些值填充 HTML 元素。
创建一个 HTML 文件 HTML_Demo:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<input id="A8SBwf" type="text">
<input id="gNO89b" type="button" value="Click Me" onclick="buttonOnClick()">
<script>
function buttonOnClick() {
try {
google.script.run.withSuccessHandler(
function(response) {
document.getElementById("A8SBwf").value = response;
}
).getCellA1();
}
catch(err) {
alert(err);
}
}
</script>
</body>
</html>
然后在 Code.gs 中创建 getCellA1:
function getCellA1() {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var range = sheet.getRange("A1");
return range.getValue();
}
catch(err) {
return err.message;
}
}