我从https://stackoverflow.com/users/6656050/jeremy-kahan找到了这段代码并对其进行了一些编辑。当L列中的条目超过一个月时,我需要我的工作表删除任何行,但如果L列中的单元格为空,请保留该行,我需要一些指导。根据要求,我可以提供我的表格副本并显示示例。其他人看起来似乎很容易,但我觉得自己处于劣势,只有16岁而且只是学习java。
function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");//assumes Sheet 1 is the name of the sheet
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();//today
var monthOld = Date.now() + -30*24*3600*1000;
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][11];// arrays are 0 indexed so row1 = values[0] and col12 = [11]
if (tempDate <= (monthOld))
{
sheet.deleteRow(i);
}
}
答案 0 :(得分:2)
我会提供一些帮助,即使我会受到惩罚。在将来,做一些研究,尝试理解代码并使代码适合您的目的。如果你不能,谷歌也没有帮助,那么就来看看有关所有细节的CLEAR问题。如果所有这些都没有完成,那么这里的大多数顶级狗甚至都不会看你的问题。另外,请务必在问题上使用正确的标签。没有它们,它甚至不会出现在正确的人身上。
现在回答:
如果L列中的日期是&gt;您要删除一行过去30天。您提供的代码正在查看C列中的日期。所以这是第一件需要改变的事情。其次,条件if ((tempDate!=NaN) && (tempDate <= currentDate))
正在检查单元格是否为空(NaN
),或者日期是&lt; = TODAY, NOT 今天 - 30.所以,您需要一种方法来计算今天的情况 - 30天:var monthOld = Date.now() + -30*24*3600*1000;
,然后您可以将其与L列中的日期进行比较。
如果你进行了这两项修改,你会得到:
function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Live Events");//assumes Live Events is the name of the sheet
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();//today
var monthOld = Date.now() + -30*24*3600*1000;
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][11];// arrays are 0 indexed so row1 =
values[0] and col12 = [11]
if ((tempDate!=NaN) && (tempDate <= (monthOld)))
{
sheet.deleteRow(i);
}
}
}
这应该做你想要的。如果您还有其他问题,请与我们联系。我很乐意提供帮助。
答案 1 :(得分:0)
function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");//assumes Sheet 1 is the name of the sheet
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();//today
var monthOld = Date.now() + -30*24*3600*1000; //to change amount of days adjust "30"
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][11];// arrays are 0 indexed so row1 = values[0] and col12 = [11]
if ((tempDate!="") && (tempDate <= (monthOld)))
{
sheet.deleteRow(i);
}
}
}