google-apps-script - 删除谷歌表格上过时条目的代码
问题描述
我在这里找到了这段代码,它对我来说应该是完美的。只是希望有人可以更改代码以删除日期为 2 周或更早的条目。因此,如果脚本今天运行,它将删除 10 月 26 日或更早的所有行。
function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("MASTER");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();//today
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if ((tempDate!=NaN) && (tempDate <= currentDate))
{
sheet.deleteRow(i);
}//closes if
}//closes for loop
}//closes function
解决方案
我相信你的目标如下。
- 从您的脚本和问题中,您希望在“C”列的日期在从今天起 2 周之前删除行。
在这种情况下,如何进行以下修改?在您的脚本中,当“C”列的值为日期对象时,您正在比较日期对象。
从:
var currentDate = new Date();//today
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if ((tempDate!=NaN) && (tempDate <= currentDate))
{
sheet.deleteRow(i);
}//closes if
}//closes for loop
}//closes function
到:
var currentDate = new Date();
currentDate.setDate(currentDate.getDate() - 14); // Added: This means before 2 weeks from today.
var d = currentDate.getTime(); // Added
for (i = lastrow; i >= 3; i--) {
var tempDate = values[i - 1][2];
if ((tempDate != NaN) && (tempDate.getTime() <= d)) { // Modified
sheet.deleteRow(i);
}
}
}
参考:
推荐阅读
- c++ - 让 CMake 定义应该使用哪个 VS 链接器而不指定路径
- c# - 如何从包含换行符的字符串中获取子字符串?
- python - 使用 pxssh 禁用远程提示
- javascript - 使用时如何使用 javascript 设置数据表行颜色:table.row.add?
- javascript - 调用对象重置/默认对象值?
- sql - COUNT 但它计算空值?
- django - 媒体文件不预览 - Django
- javascript - 从各种 Google 表格单元格中提取不同的链接,使用 Google Apps 脚本将它们粘贴到 Google 文档模板中作为活动 URL/超链接
- postgresql - 索引/唯一索引对插入的影响
- python - 如何设置 VSCode 设置,以便可以导入?