我的经验很少,实际上几乎没有经验,所以我的一些术语就是最近才出现的' herd'不知道。
我有两张Spreadsheets,其中1张相同的名称相同。
电子表格"制作"表" Master" - 表格ID为1goG0TS1_2jwlGRetREYNRVk-Q6TEy3iWG_5VXFoZlus
电子表格" Archived_Production" "万事达" - 表格ID为1Mr4LJmp1SmpDs1i8U_PE5uLOEVjLc599Vq87m9HwCx0
使用onOpen脚本,或者可能是定时触发器,设置在我的" Production"电子表格我需要将所有行移动到我的" Archived_Production"满足2个标准的电子表格
标准1 - B栏中的日期比当前日期早7天
但是,如果还是
标准2 - 列O中的条目是" 100%"
在随附的屏幕截图示例中,今天的日期是2014年11月19日,只有第一个以黄色突出显示的条目会在下次打开电子表格时被移动。
一如既往地感谢您提前寻求帮助。
抱歉,还没有足够的帖子允许图片上传,但希望文字解释。
答案 0 :(得分:0)
您可以使用此功能在onOpen()
脚本上执行操作。
function onOpen() {
// I moved data from sheet1 to sheet2
var production_sheet_id = 'Put your production sheet's id here'; // This is your source sheet
var archived_sheet_id = 'Put your archived sheet's id here'; // This is your destination sheet
var sheet1 = SpreadsheetApp.openById(production_sheet_id).getSheets()[0];
var sheet2 = SpreadsheetApp.openById(archived_sheet_id).getSheets()[0];
var rows = sheet1.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
for (var i = 0; i < numRows; i++) {
var oldDate = values[i][1]; // or var oldDate = new Date('values[i][1]')
var curDate = new Date();
// Count time difference in milliseconds, convert them into days then.
var diffInMilliSecs = (curDate.getTime() - oldDate.getTime());
var diffInDays = diffInMilliSecs/1000/60/60/24;
var diffInDays = Math.round(diffInDays);
if(values[i][14] == 1.0 && Math.abs(diffInDays+30) >= 7) // It evaluates 100% to 1.0
sheet2.appendRow(values[i]);
}
}