javascript - 编写脚本来更新重复任务
问题描述
我正在尝试准备工作表,该工作表将自动将已完成的任务从选项卡移动到另一个选项卡,并从现在开始将任务的日期更新为一个。
我想要达到的目标:
- 每当列 E更新为时,月度表中的第 2 行应流向已完成的任务
'Done'
。 - 已完成的任务选项卡将有点像档案,以帮助我了解我过去完成项目任务的情况。
您能否查看我的脚本并帮助我找出问题所在?
这是脚本:
function onEdit(e) {
var row = e.range.getRow();
var col = e.range.getColumn();
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName("Completed Tasks");
var lastRow = sheet.getLastRow();
var activeRow = spreadsheet.getRowHeight(row);
var active_range = sheet.getActiveRange();
if(col = 10 && row > 1 && e.source.getActiveSheet().getName() === "Monthly Sheet" &&
e.source.getActiveSheet().getRange(row,10).getValue() === "Done" &&
e.source.getActiveSheet().getRange(row,10).getValue() !== "" ) {
spreadsheet.getRange(active_range.getRowIndex() + ":" + active_range.getRowIndex()).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Completed Tasks'), true);
spreadsheet.getRange(active_range.getRowIndex() + ":" + active_range.getRowIndex()).activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
}
}
解决方案
- 您的代码的主要问题是它没有检查E 列,即
col == 5
. - 我还删除了一些不必要的代码并进行了一些修改以产生所需的结果。
解决方案:
function onEdit(e) {
const row = e.range.getRow();
const col = e.range.getColumn();
const sheet = e.source.getSheetByName("Completed Tasks");
const lastRow = sheet.getLastRow();
const active_sheet = e.source.getActiveSheet();
if(col == 5 && row > 1 && active_sheet.getName() === "Monthly Sheet" && e.range.getValue()=='Done') {
var ref_date = active_sheet.getRange(row,4).getValue();
ref_date.setDate(ref_date.getDate() + 30);
active_sheet.getRange(row,4).setValue(ref_date);
active_sheet.getRange(row,col+1).setValue(new Date());
const values = active_sheet.getRange(row,1,1,active_sheet.getLastColumn()).getValues();
sheet.getRange(lastRow+1,1,values.length,values[0].length).setValues(values);
active_sheet.getRange(row,1,1,active_sheet.getLastColumn()).clearContent();
}
}
推荐阅读
- c# - 是否可以让 CombinedManipulator 在 Helix Toolkit WPF 中使用左键而不是右键?
- php - 其他语言的二进制文件,如 php-cgi
- java - 在 Java 中构建分词器
- arrays - 如何遍历 JSON 数组中的元素?
- javascript - 如何检查特定字符串是否作为对象中的值出现?
- python - 如何将默认 tkinter 字体应用于所有 tkinter 窗口
- laravel - 如何在 laravel 中默认向所有控制器添加方法?
- hibernate - 多对一映射上的休眠过滤器
- flutter - BlocBuilder 无法在新版本的颤振中将动态按钮构建到表单中
- java - Apache POI - 检索 .doc 文件中关键字之间的文本内容并有条件地呈现它