google-apps-script - 试图用谷歌表格中的笔记制作任务跟踪器
问题描述
我正在尝试在谷歌表格中制作任务/项目跟踪器。
我想要发生的是——每行应该有一个指定的单元格(例如单元格 A5),当我输入一串文本时——它会转到某个单元格,即具有“注释”标题的单元格 A2 -- 在它前面添加日期 -- 单元格 A5 清除
这是可行的吗?
解决方案
在第 5 列中输入字符串,在第 2 列中获取字符串,并在其前面加上日期。
这使用了一个简单的触发器,称为 onEdit 触发器。每当用户编辑单元格时它就会触发。在这种情况下,如果您编辑第 5 列中的单元格,它会将编辑字符串放入日期之前的同一行的第 2 列中。
您无法从脚本编辑器运行此函数,因为它没有收到事件对象,因此出现错误 cannot find getRange() of null。
只需将其粘贴到您的脚本编辑器中,如果您没有 sheet0,则编辑 Sheet0,然后更改第 3 行中的工作表名称。
function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Sheet0' && e.range.columnStart == 5 && e.range.rowStart > 1 && e.value) {
e.range.offset(0,-3).setValue(`${new Date()} ${e.value}`);
}
}
这是在第 5 列中添加编辑单元格后工作表的样子
参考您的后续问题,这是脚本:
function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Sheet0' && e.range.columnStart == 5 && e.range.rowStart > 1 && e.value) {
e.range.offset(0,-3).setValue(e.range.offset(0,-3).getValue() + `\n${new Date()} ${e.value}`);
e.range.setValue('');
}
}
现在添加格式化日期:
function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Sheet0' && e.range.columnStart == 5 && e.range.rowStart > 1 && e.value) {
let dt = Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"MMM dd, yyyy hh:mm a");
e.range.offset(0,-3).setValue(e.range.offset(0,-3).getValue() + `\n${dt} ${e.value}`);
e.range.setValue('');
}
}
推荐阅读
- sql - 二进制数据类型是如何真正存储的?
- android - Firebase 样式的文本
- angularjs - angularjs范围变量未在视图中更新
- python - 如何重塑 tflearn 的输入数据?
- logback - Spring Cloud Sleuth 可以为日志提供跨度持续时间吗?
- java - 我应该在 Java 10 中使用 var 吗?
- java - 尝试连接到 localhost 服务器时出现 NullpointerException
- javascript - 从嵌套组件中的基础组件获取 ViewChild
- terraform - Terraform 模块结构
- php - 根据提交时的多个选中复选框显示结果