button - 谷歌表格:点击按钮取消突出显示行,突出显示下一行,并使用日期和时间按钮更新单元格被点击
问题描述
我正在尝试创建一个轮换调度程序。我的目标是有一张包含姓名、电话号码和按钮的表格。
按下按钮(“分配”)时,它会突出显示一行,并使用单击的日期和时间更新表格外的单元格。当再次按下它时,它会取消突出显示该行并突出显示下一行,并更新日期/时间单元格。
当它到达底部时,它应该回到顶部。它应该保存在关闭和打开文档之间停止的位置,即使有几个用户打开它,它也需要同步......我不认为 Excel 可以做到这一点,但 Google 表格应该能够,这就是为什么我我倾向于使用 Google 表格。
我完全理解如果期望有人在论坛上解决这个问题太过分了,但我非常感谢即使是在正确的方向上自己解决问题的一点!
解决方案
按下按钮(“分配”)时,它会突出显示一行,并使用单击的日期和时间更新表格外的单元格。
您可以添加或创建充当按钮的图像,并关联单击时触发的脚本。
当它到达底部时,它应该回到顶部。
一种方法是跟踪突出显示的行并使用模运算返回到表的开头。
它应该保存在关闭和打开文档之间停止的位置
一种选择是使用属性服务来存储突出显示的行。
我尝试使用这些想法来实现一个示例(在运行之前制作一个副本):https ://docs.google.com/spreadsheets/d/1bHN5cf2HaLTW3EbAxfXUusQnDL3dNFY313J8cdTGp4o/
相关脚本:
var NUMBER_OF_ASSIGNEES = 5;
var LAST_ASSIGNMENT_DATETIME_CELL = 'G3';
var TABLE_OFFSET = 2;
function assignNewPerson(){
var sheet = SpreadsheetApp.getActive().getActiveSheet();
setAssignTime(sheet);
assignNext(sheet);
}
function setAssignTime(sheet) {
var d = new Date();
sheet.getRange(LAST_ASSIGNMENT_DATETIME_CELL).setValue(d.toLocaleTimeString());
}
function assignNext(sheet) {
// Use the Properties Service to store the current assignee index.
var documentProperties = PropertiesService.getDocumentProperties();
var currentAssigneeIndex = parseInt(documentProperties.getProperty('CURRENT_ASSIGNEE_INDEX'));
if (isNaN(currentAssigneeIndex)) {
currentAssigneeIndex = 0;
}
// Remove highlight from assignee cells.
sheet.getRange(TABLE_OFFSET + currentAssigneeIndex, 1, 1, 2).setBackground("white");
// Increment the assignee index. If the last row is reached, go back to the start of the table.
currentAssigneeIndex = (currentAssigneeIndex + 1) % NUMBER_OF_ASSIGNEES;
documentProperties.setProperty('CURRENT_ASSIGNEE_INDEX', currentAssigneeIndex);
// Highlight assignee cells.
sheet.getRange(TABLE_OFFSET + currentAssigneeIndex, 1, 1, 2).setBackground("yellow");
}
推荐阅读
- java - Documents4j remoteServer 转换服务器设置
- web-deployment - 可以从任何地方访问我的 Oracle 云应用程序自定义网页
- python - 在 QTabBar 中的各个选项卡上设置和保留颜色
- javascript - 无法附加到查找元素
- sql - 为每一列添加前缀
- java - 中断()空闲线程而不是等待()/通知()会更好吗?
- cucumber - Cucumber 3:如何定义正则表达式
- angularjs - 从 index.html 调用视图控制器
- android - 每 5 秒向安卓智能手机写入数据对硬盘来说是个问题吗?
- google-tag-manager - 与 GTM 一起发布的 JSON-LD 结构化数据测试工具出错:“对象声明中缺少 ',' 或 '}'。”