google-apps-script - 谷歌表格创建一个按钮,点击它,它将从列表中给出下一个单元格
问题描述
我想创建一个函数,在单元格 D2 中显示列表 A2:A8 中的一个单元格,当我单击“向下”按钮时,它将在 D2 中显示列表 A2:a8 中的下一个单元格。当我单击“向上”按钮时,它将在 D2 中显示列表 A2:a8 中的下一个单元格。当我单击“重置”按钮时,它将在 D2 中显示单元格 A2。非常感激!谢谢!
解决方案
我相信你的目标如下。
- 您在 Google 电子表格中的工作表上有 3 个按钮。
- 单击按钮时,您想更改单元格“D2”的值。
- 例如,当单元格“A2:A8”有一个列表时
a,b,c,d,e,f,g
,- 当您单击向上按钮时,您希望将列表中的一个元素的值从
g
到a
。 - 当您单击向下按钮时,您希望将列表中的一个元素向下从
a
到的值g
。 - 当您单击重置按钮时,您想要设置列表中的顶部元素。对于样本值,
a
设置。
- 当您单击向上按钮时,您希望将列表中的一个元素的值从
在这种情况下,我认为需要使用 Google Apps Script,因为该脚本是通过单击按钮运行的。在这个答案中,我想提出以下示例脚本。
示例脚本:
请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中。请将、和的功能名称分别分配给up
、down
和reset
的按钮。这样,每个功能都通过单击按钮来运行。up
down
reset
function handler_(button) {
var lock = LockService.getDocumentLock();
if (lock.tryLock(10000)) {
try {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("D2");
let cellD2 = range.getValue();
const list = sheet.getRange("A2:A8").getValues().flat();
if (cellD2 == "") cellD2 = list[0];
const index = list.indexOf(cellD2);
const newIndex = button == "up" ? index - 1 : button == "down" ? index + 1 : 0;
if (newIndex >= 0 && newIndex < list.length) {
range.setValue(list[newIndex]);
}
} catch(e) {
throw new Error(e);
} finally {
lock.releaseLock();
}
}
}
const up = _ => handler_("up");
const down = _ => handler_("down");
const reset = _ => handler_("reset");
结果:
当上述脚本用于您的示例电子表格时,它变为如下。
笔记:
- 这是一个简单的示例脚本。所以请根据您的实际情况进行修改。
参考:
推荐阅读
- html - 您可以在 JSON-LD 中使用 HTML 实体吗?
- javascript - 从 formControl 中清除值
- javascript - Interpolation of an array of points
- jenkins - Jenkins ssh-agent 主机密钥验证失败
- python-3.x - 如何通过子表从父表中获取数据
- javascript - 不能从松露控制台铸币,尽管从测试文件铸币工作
- java - 对于长度为 100000 的类型字符变化(255)的值太长
- javascript - MongoDB聚合:将ID数组替换为同一文档中数组中的相应对象
- python - 如何让函数在某个时间和某个时间间隔开始工作?
- single-page-application - 单页应用程序是否在第一次请求时返回唯一的源代码(可以在浏览器“源代码视图”中查看)?