google-sheets - 谷歌表格中是否有一种方法可以根据其中一列内的下拉选项自动移动整行并更改日期
问题描述
我要做的是获取包含 A 到 N 列的谷歌表。我想要做的是获取行,除了第 1 行,它是所有列的标题,并让它们自动移动到底部基于 E 列中的下拉选项的同一电子表格。一旦选择了表示已完成的选项,我希望整行自动移动到电子表格的底部。除此之外,我还希望通过在该列中的日期添加一年来更新 D 列,即事件的截止日期,因为新的截止日期将是前一年的一年。这可能吗?谢谢您的帮助。
function onEdit(e) {
const row = e.range.getRow();
const col = e.range.getColumn();
const as = e.source.getActiveSheet();
if(as.getName() == "Sheet1" && col == 5 && row >1 && !as.getRange(row,col).getValue()=='MPS')
{
const row_new = as.getRange(row,1,1,col);
row_new.copyTo(as.getRange(as.getLastRow()+1,1,1,col));
as.deleteRow(row)
}
}
解决方案
您应该更改比较第 5 列的方式
我使用了以下示例:
而不是 '==' 使用 '===' 比较,因为双 '=' 不是比较值,而是比较对象的类型。话虽如此,这是我的方法:
function onEdit(e) {
const row = e.range.getRow();
const col = e.range.getColumn();
const as = e.source.getActiveSheet();
const newDate = new Date();
// No due date
if (as.getRange(row,3).getValue() > newDate) {
return;
}
if(as.getName() === "Sheet1" && col === 5 && row >1 && as.getRange(row,col).getValue()!=='MPS')
{
let row_new = as.getRange(row,1,1,col);
// Add 1 day to your due date
let oldValues = row_new.getValues();
oldValues[0][3] = new Date(oldValues[0][3].setDate(newDate.getDate() + 1));
// Set the new date
row_new.setValues(oldValues);
row_new.copyTo(as.getRange(as.getLastRow()+1,1,1,col));
as.deleteRow(row);
}
}
在最开始的日期之间进行比较以确定 D 列(日期)是否大于当前日期,然后为了设置新的日期,我使用班级日期并添加 1 天从 D 列中提取的日期。
参考
推荐阅读
- javascript - 获取新数组后组件未更新
- javascript - 我在 POSTMAN 中收到 500 个内部服务器错误
- c# - 从 Blazor Webassembly 流式传输大文件?
- javascript - 如何为我用 JavaScript 编写的这个 HTML 生成器添加适当的缩进
- regex - Perl - 如何从文本文件中省略行?
- elasticsearch - Elastic Search 多个 AND + OR 查询
- python - Python - 如何在 Excel 中过滤掉数据
- angular - 在以角度运行 compodoc 期间如何修复错误?
- javascript - 在 Plot.ly for JavaScript 中为条形图添加链接
- progressive-web-apps - 尝试加载时 Service Worker 获取错误 --- 我的网站?