[英]How to automatically delete rows that contain a date with more than 3 days offset to the past from now?
我正在嘗試運行一個腳本,該腳本將自動刪除日期超過 3 天(4 天)的行
我發現了這個我希望能夠適應的腳本:
function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//give your sheet name below instead of Sheet1
var sheet = ss.getSheetByName("Foglio1");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var currentDate = new Date();
var oneweekago = new Date();
oneweekago.setDate(currentDate.getDate() - 7);
for (i = lastrow; i >= 2; i--) {
var tempdate = sheet.getRange(i, 1).getValue();
if (tempdate < oneweekago) {
sheet.deleteRow(i);
}
}
}
但是腳本本身似乎有一個錯誤,我需要在將其調整為 4 天而不是 7 天之前弄清楚(這部分很容易)
如果該信息有幫助,我的工作表有 3 列,日期在 C 列
“C 列中的日期,如果該信息有幫助的話”
確實是 ! 而不是像在這一行中那樣嘗試在 A 列中獲取日期:
var tempdate = sheet.getRange(i, 1).getValue();
您應該像這樣查看 C 列中的值:
var tempdate = sheet.getRange(i, 3).getValue();
但為了更有效,你應該在數組級別進行這些比較,像下面一樣嘗試它,它會運行得更快......
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Foglio1");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();
var oneweekago = new Date();
oneweekago.setDate(currentDate.getDate() - 7);
for (i=lastrow;i>=2;i--) {
var tempdate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if(tempdate < oneweekago)
{
sheet.deleteRow(i);
}
}
}
如果您的行按日期順序排列,最新的在頂部並且您一次刪除所有行而不是一次刪除一個,那么速度會快得多。
function deleteOldData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("CallHub1");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();
var daysago = new Date().setDate(currentDate.getDate() - 3);
var yearago = new Date().setDate(currentDate.getDate() - 365);
for (i=lastrow;i>=2;i--) {
var tempdate = values[i-1][0];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if(tempdate < daysago) {
if(tempdate < yearago) {continue;}
sheet.deleteRows(1, i);
break;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.