如何使用 Google Apps 脚本在电子表格中查找按钮的位置?
Posted
技术标签:
【中文标题】如何使用 Google Apps 脚本在电子表格中查找按钮的位置?【英文标题】:How Can I Find a Button's Location Within a Spreadsheet With Google Apps Script? 【发布时间】:2021-01-12 13:33:35 【问题描述】:我正在 Google 表格中创建课堂考勤日志。我有一个列有每个学生的姓名,还有一个列是他们到达课堂的时间。我想为每个学生添加一个按钮,我可以单击该按钮来运行一个脚本,该脚本将当前时间插入到该学生的到达时间单元格中。有没有办法找到按钮的位置,以便我的脚本可以将时间插入适当的单元格?
以下是我设置工作表的方式: https://docs.google.com/spreadsheets/d/19wRj1zPGf1hm8PDUYtEF2XUxirhk2lIJbHAZF9e9YqE
有没有更好的方法来做到这一点?我玩过NOW()
公式,但每次我在工作表中做任何其他事情时它都会更新。如果我能以某种方式强制它保持不变,这可能是一个可行的选择。
【问题讨论】:
你的标题和描述似乎完全无关? 我不知道“绘图的位置”是什么意思,但是您应该可以将 now() 与 copyTo 一起使用,其参数如下: source.copyTo(ss.getRange('A1' ), contentsOnly: true); @Baby_Boy,我更新了问题的标题和描述。希望这能澄清我在寻找什么。 【参考方案1】:根据我的理解,您希望获取正在单击的绘图的单元格行以包含特定学生的时间条目。
这是不可能的,当您单击绘图/图像时,您只是单击了绘图/图像。它不会使图像所在的单元格处于活动状态。因此,我们不能使用getActiveRange
和getSelection
方法来定位图片所在的单元格。
我能想到的一种解决方法是使用复选框而不是绘图。单击复选框时,它会使单元格处于活动状态。
示例代码:
function onEdit(e)
const sheet = e.source.getActiveSheet();
const cell = e.range
// Check if checkbox was checked and there is no time-entry yet
if (cell.isChecked() == true && cell.offset(0,-1).isBlank())
//Include time entry on the left side of the checkbox
//var date = Utilities.formatDate(new Date(), 'America/Los_Angeles', 'MMMM dd, yyyy HH:mm:ss Z');
var date = Utilities.formatDate(new Date(), 'America/Los_Angeles', 'HH:mm:ss Z');
cell.offset(0,-1).setValue(date);
// Uncheck the checkbox
cell.setValue(false);
else if (cell.isChecked() == true)
// Uncheck the checkbox
cell.setValue(false);
您可以根据自己的喜好更改时间戳的格式。在这个例子中,我只显示了当前时间。见Working with Dates and Times
输出:
我在设置时间戳后重置了复选框。
【讨论】:
这太完美了!谢谢!以上是关于如何使用 Google Apps 脚本在电子表格中查找按钮的位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Google 电子表格中的 Google Apps 脚本自动更新“站点地图”功能?
在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格
在 Google Apps 脚本中从另一个电子表格编辑一个电子表格
如何使用 Google Apps 脚本将来自 Google 电子表格和 ScriptDB 的数据插入 BigQuery 表