gpt4 book ai didi

google-apps-script - 勾选复选框触发添加时间戳的功能

转载 作者:行者123 更新时间:2023-12-04 01:45:39 25 4
gpt4 key购买 nike

我正在构建一个跟踪特定数据的电子表格。当我勾选一个复选框时,我想在相应的相邻单元格中放置一个时间戳 - 或者我会很高兴在复选框上注明上次勾选 TRUE 的时间。

我真的花了一整天的时间在 Stackoverflow 和谷歌上搜索一切,并且我尝试了许多不同的方法和功能。主要是我一直在使用 onEdit(e) 函数来(尝试并)添加时间戳。早期的尝试发现了一个已知缺陷,这意味着 onEdit(e) 没有捕获复选框更改状态的所有实例。我相应地改变了我的方法,既尝试将时间戳添加到相应的相邻单元格,也尝试将注释添加到复选框单元格 - 两者似乎都偶尔起作用,这非常令人沮丧。

目前我遇到这个问题的三个主要问题:

  1. 了解检查复选框值的语法(我使用 == 还是 ===,我使用 '', " , 或者没有引号?)。这听起来像是一个非常愚蠢的问题,但我有学习困难并且很难在我的内存中保留书面信息:(

  2. 成功设置“if”->“else if”语句,该语句将根据复选框的状态“切换”时间戳打开或关闭。

  3. 我更愿意在复选框单元格上设置一个带有时间戳的注释,当复选框未被选中时,该时间戳将被清除 - 但是有几次我让它工作时区是不正确的。我阅读了很多关于 timezone 的文章,但没有一个有效的例子,我无法理解如何将它实现到我的代码中。我是格林威治标准时间 +10

我提供了我的电子表格的简化版本,其中仅包含我遇到问题的特定工作表和代码:

https://docs.google.com/spreadsheets/d/1NCdMziBpj0joSv9lQfqT9etz9hMsvgMeuT8X9XTxR20/edit?usp=sharing

这是我一直在处理的最新代码迭代。我可能尝试了六个完全不同的功能,但在碰壁几个小时后删除了每一个:

function onEdit() {
var ss = SpreadsheetApp.getActiveSheet();

if(ss.getName() == "Quests" ) { //checks that we're on the correct sheet
var tickboxCell = s.getActiveCell();
if(tickboxCell.getColumn() == 3 && tickboxCell.getValue() === 'TRUE' ) { //checks the status of the tickbox
var dateCell = tickboxCell.offset(0, 1);
dateCell.setValue(new Date());
}
}
}

这是我修改的用于向复选框添加注释的示例代码:

function setNote(note){
var note = note;
var cell = SpreadsheetApp.getActiveSheet().getActiveCell();

if(note == ""){
cell.clearNote();
}else{
cell.setNote(note);
}
}

我希望任何时候勾选一个复选框,右边的相应单元格将输入 date(),或者复选框将添加一条注释,说明“任务已完成:dd/mm/yyy”(+10 GMT 时区)。然后我希望时间戳单元格被清除,或者如果复选框状态未选中则注释被清除。

最佳答案

试试这个:

function onEdit(e) {
if(e.range.getSheet().getName() != 'Quests') { return; }
if(e.range.columnStart==3 && e.value=="TRUE") {
e.range.offset(0,1).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd:HHmm"));
}
}

关于google-apps-script - 勾选复选框触发添加时间戳的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55384574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com