javascript - Google Apps 脚本:使用边栏创建新工作表
问题描述
我想用边栏在我的电子表格中创建一个新工作表。我是使用侧边栏的新手,所以我不知道该怎么做。
代码.gs:
function createSheet(sheetName) {
var sheet = ss.getSheetByName(sheetName)
if (!sheet) {
ss.insertSheet('Lookup: ' + sheetName)
}
}
页面.html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h3>Create Partial Vlookup Table</h3>
<input id="myData">
<button onclick="createLookup()">Click</button>
<script>
function createLookup(){
var myData = document.getElementById('myData').value
google.script.run.withSuccessHandler(createSheet(myData))
}
</script>
</body>
</html>
我会很感激我能在这个问题上得到任何帮助!
解决方案
我相信你的目标如下。
- 您想使用侧边栏在活动电子表格中插入新工作表。
修改点:
- 为了在 Google Apps Script 端运行该功能,请修改
google.script.run.withSuccessHandler(createSheet(myData))
为google.script.run.withSuccessHandler(function).createSheet(myData)
. - 在您的脚本中
createSheet
,似乎ss
没有声明。
当你的脚本用以上几点修改时,它变成如下。
修改后的脚本:
HTML & Javascript 方面:
在这种情况下,请createLookup
进行如下修改。
function createLookup(){
var myData = document.getElementById('myData').value;
google.script.run.withSuccessHandler(alert).createSheet(myData); // Modified
}
Google Apps 脚本方面:
function createSheet(sheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Added
var sheet = ss.getSheetByName(sheetName);
if (!sheet) {
ss.insertSheet('Lookup: ' + sheetName);
}
return "ok"; // Added
}
通过上述修改,当单击侧栏上的输入值按钮时,将在活动电子表格中插入一个新工作表。并且,
ok
返回,您可以在浏览器的警报对话框中看到它。当你想要打开侧边栏的脚本时,下面的脚本怎么样?
function openSidebar() { SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutputFromFile("Page")); }
参考:
推荐阅读
- asp.net - ASP.NET 无序处理请求
- ignite - Apache Ignite、没有过滤器的扫描查询和缓存迭代器,都返回空结果集。缓存中的条目数非零
- tensorflow - TensorFlow 2.2 中如何替换 tf.contrib.seq2seq.TrainingHelper
- c++ - 请解释字谜的代码,我无法理解计数器数组,每个值已经是 0
- machine-learning - MLOps - 如何刷新 ML 模型
- python - 过滤元组数据列表
- git - 用于修补版本、标记、添加、提交和推送的命令
- jmeter - 在 JMeter 报告中保持请求的原始顺序
- reactjs - TypeError:您在预期流的位置提供了无效对象。Redux 观察问题
- mysql - 摆脱重复的 item_id 但将价格添加到 MySQL 中的初始行