google-apps-script - 如何使用 Google Apps 脚本在电子表格中查找按钮的位置?
问题描述
我正在 Google 表格中创建课堂考勤日志。我有一个列有每个学生的姓名,还有一个列是他们到达课堂的时间。我想为每个学生添加一个按钮,我可以单击该按钮来运行一个脚本,该脚本将当前时间插入到该学生的到达时间单元格中。有没有办法找到按钮的位置,以便我的脚本可以将时间插入适当的单元格?
这是我设置工作表的方式: https ://docs.google.com/spreadsheets/d/19wRj1zPGf1hm8PDUYtEF2XUxirhk2lIJbHAZF9e9YqE
有一个更好的方法吗?我玩弄了这个NOW()
公式,但每次我在工作表中做任何其他事情时它都会更新。如果我能以某种方式强制它保持不变,这可能是一个可行的选择。
解决方案
根据我的理解,您希望获取正在单击的绘图的单元格行以包含特定学生的时间条目。
这是不可能的,当您单击图纸/图像时,您只是单击了图纸/图像。它不会使图像所在的单元格处于活动状态。因此,我们不能使用getActiveRange
andgetSelection
方法来定位图像所在的单元格。
我能想到的一种解决方法是使用复选框而不是绘图。单击复选框时,它会使单元格处于活动状态。
示例代码:
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);
}
}
您可以根据自己的喜好更改时间戳的格式。在这个例子中,我只显示了当前时间。请参阅使用日期和时间
输出:
我在设置时间戳后重置了复选框。
推荐阅读
- asp.net-mvc - 从 MVC 操作重定向到 Web API FileStreamResult
- python-3.x - 使用字典替换 SQL 查询中的参数
- c# - 使用 .R 文件作为资源并直接在 C# 中创建批处理
- python - 构建 docker 容器时不会安装 Matplotlib
- angular - 如何在角度材料表中拆分标题
- matlab - matlab:如何用一种颜色填充绘图的一侧,用另一种颜色填充其余部分
- python - Python xml2csv xmlutils 程序需要
- c - 了解给定递归函数的目的和区别
- java - 在java中获取隐式定义的值
- c# - HttpWebRequest 获得未经授权的异常