google-apps-script - 我正在尝试向我的 google 表格添加一些脚本在侧边栏中显示各种 gif
问题描述
我想根据工作表中单元格的值显示具有不同 gif(总共 7 个)的不同 html 页面。当我的学生扫描他们的二维码(以记录他们的出勤率)时,一个特定的单元格介于 1-15 之间,我想让该数字在侧边栏中调用不同的 gif。我能够显示带有 gif 的侧边栏,但我不知道如何根据单元格中的值更改 html 页面。到目前为止,我有 2 个带有不同 gif 的 html 页面,但我计划有 7 个并使用嵌套的 if 语句来调用不同的页面。我将下面的脚本作为 javascript 包含在内,因为我看不到 google 应用程序脚本选项。任何帮助将不胜感激。谢谢。
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu('Custom Menu')
.addItem('Show sidebar', 'showSidebar')
.addToUi();
}
function showSidebar () {
var htmlA = HtmlService.createHtmlOutputFromFile('tomato')
var htmlB = HtmlService.createHtmlOutputFromFile('cucumber')
.setTitle('My custom sidebar')
.setWidth(200);
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
var cellValueRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange("H2");
var cellValue = cellValueRange.getValue();
if(cellValue = 1){
.showSidebar(htmlA);}
else if(cellValue = 2){
.showSidebar(htmlB);}
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<img src="https://media.giphy.com/media/kDwLZpqtiTObyo4qc8/giphy.gif"> <input type="button" value="Close" onclick="google.script.host.close()" />
<style>
body{
background-image:url("https://drive.google.com/file/d/1v0uW1hxmCwGhjnInIiXwempyorFHFo07/view?usp=sharing")
}
</style>
</body>
</html>
解决方案
- 您有 7 个 gif 图像的 URL。
- 您想将脚本从 2 页扩展到 7 页。
- 您想通过电子表格中“Sheet1”的“H2”中的值更改 gif 图像的 URL。
- 您想使用相同的 HTML 样式。
- 在你的脚本中,
htmlA
又htmlB
是不同的。但是您想使用相同的 HTML。
- 在你的脚本中,
如果我的理解是正确的,那么这个修改呢?在这个修改中,我使用了模板化的 HTML。请认为这只是几个答案之一。
HTML&Javascript 方面:
从:<img src="https://media.giphy.com/media/kDwLZpqtiTObyo4qc8/giphy.gif">
至:
<img src="<?= url ?>">
Google Apps 脚本方面:
请showSidebarss()
进行如下修改。在运行脚本之前,请进行以下设置。
- 将图像的 URL 设置为
gifImages
. - 将 HTML 的文件名设置为
var html = HtmlService.createTemplateFromFile('index');
.
function showSidebarss() {
// Please set URLs of gif images.
var gifImages = {
"1": "https://media.giphy.com/media/kDwLZpqtiTObyo4qc8/giphy.gif",
"2": "### URL for value 2 ###",
"3": "### URL for value 3 ###",
,
,
,
};
// Retrieve value as a key.
var cellValueRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange("H2");
var cellValue = cellValueRange.getValue();
// Show sidebar.
var html = HtmlService.createTemplateFromFile('index'); // Please set this.
html.url = gifImages[cellValue.toString()]; // Set url for <?= url ?>.
SpreadsheetApp.getUi().showSidebar(html.evaluate());
}
- 即使删除
toString()
了 of,该脚本也可能有效。cellValue.toString()
笔记:
- 这是一个简单的修改。所以请根据您的情况进行修改。
参考:
编辑:
如果要showSidebarss()
在编辑“Sheet1”的“H2”单元格时运行,请修改如下。
在使用此脚本之前。请showSidebarss()
按如下方式安装 OnEdit 触发器。
如何安装 OnEdit 触发器:
- 打开脚本编辑器。
- 编辑 -> 当前项目的触发器。
- 单击“添加触发器”。
- 为“选择要运行的功能”设置“showSidebarss”。
- 为“选择事件源”设置“来自电子表格”。
- 将“选择事件类型”设置为“编辑时”。
安装触发器后,当您编辑“Sheet1”的“H2”单元格时,showSidebarss()
会自动运行。
修改后的脚本:
function showSidebarss(e) {
if (e && e.source.getSheetName() == "Sheet1" && e.range.getA1Notation() == "H2") {
// Please set URLs of gif images.
var gifImages = {
"1": "https://media.giphy.com/media/kDwLZpqtiTObyo4qc8/giphy.gif",
"2": "### URL for value 2 ###",
"3": "### URL for value 3 ###",
,
,
,
};
// Retrieve value as a key.
var cellValueRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange("H2");
var cellValue = cellValueRange.getValue();
// Show sidebar.
var html = HtmlService.createTemplateFromFile('index'); // Please set this.
html.url = gifImages[cellValue.toString()]; // Set url for <?= url ?>.
SpreadsheetApp.getUi().showSidebar(html.evaluate());
}
}
笔记
- 在当前阶段,没有任何方法可以使用 Google Apps Script 更改已打开的侧边栏的 HTML。因此,作为一种解决方法,我使用了通过覆盖侧边栏来更改 HTML 的方法。
参考:
推荐阅读
- javascript - 使用 Google 登录时是否可以刷新页面 - 登录时?
- python - python函数的使用
- php - Laravel index.php 路由问题
- c# - WebSecurity 将 CurrentUserId 显示为 -1
- django - django formset - 如果复选框不正确,不要提交单个表单?
- mysql - Liferay-7 与 MySQL-8 数据库不工作
- android - 警报对话框文本颜色更改问题
- javascript - 让 HTML 文件选择器浏览服务器端
- cloud-foundry - 在 Cloud Foundry 中暂存
- php - php输入后方法中的javascript值不起作用