【发布时间】:2019-03-04 17:33:52
【问题描述】:
我有三张工作表,我想根据某些条件在它们之间传输数据行。从 sheet1 到 sheet2 基于文本字符串,从 sheet2 到 sheet3 基于今天日期与输入日期之间的差异。但是到目前为止,我的尝试都没有结果。
我想根据“P”列读取为“已完成”还是“已抛出”将数据从 sheet1 移动到 sheet2。我还想在“O”列中记录更改为上述任一选项的日期。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var c = ss.getSheetByName("Case Logs");
var r = ss.getSheetByName("Recent Cases");
var data = c.getDataRange().getValues().map(function(x) {return x[16];});
var numColumns = c.getLastColumn();
var current = new Date();
for (var i= data.length-1; i>=0; i--) {
if(["Completed"].indexOf(data[i])>-1) {
var row = i+1;
var target = r.getRange(r.getLastRow() + 1, 1);
c.getRange('O').setValue(current);
c.getRange(row, 1, 1, numColumns).copyTo(target);
c.getRange(row, 1, 1, numColumns).clearContent();
c.getRange(row, 1, 1, numColumns).clearNote();
}
if(["Thrown Out"].indexOf(data[i])>-1) {
var row = i+1;
var target = r.getRange(r.getLastRow() + 1, 1);
c.getRange('O').setValue(current);
c.getRange(row, 1, 1, numColumns).copyTo(target);
c.getRange(row, 1, 1, numColumns).clearContent();
c.getRange(row, 1, 1, numColumns).clearNote();
}
}
}
对于第二个条件,我想根据“O”列中列出的日期是否大于或等于与当前日期的四个月差,将行从 sheet2 移动到 sheet3。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getSheetByName("Recent Cases");
var a = ss.getSheetByName("Archived Cases");
var data = r.getDataRange().getValues().map(function(x) {return x[16];});
var numColumns = r.getLastColumn();
var TIME_FRAME = 1000 * 60 * 60 * 24 * 120;
var now = new Date();
var past = new Date(now.getTime() - TIME_FRAME);
for (var i= data.length-1; i>=0; i--) {
if (["**Column DATE**"].indexOf(logs[i])>-1 >= past){
var row = i+1;
var target2 = a.getRange(a.getLastRow() + 1, 1);
r.getRange(row, 1, 1, numColumns).copyTo(target2);
r.getRange(row, 1, 1, numColumns).clearContent();
r.getRange(row, 1, 1, numColumns).clearNote();
}
}
}
虽然因为我确实在抨击任何看起来有效的编程,但整个事情都是一团糟。我不知道如何引用列中的特定单元格并确认它是否是日期,在我尝试输入日期后第一个 onEdit 部分也不再工作。
【问题讨论】:
-
您有问题吗?
-
是的,这是一个问题/帮助请求。更新了标题以使其更清晰。我不知道如何实现我的目标
标签: google-apps-script google-sheets