【问题标题】:Delete rows based on timestamp AND text in a separate column根据时间戳删除行和单独列中的文本
【发布时间】:2020-09-30 19:57:10
【问题描述】:

我正在尝试修改this answer 中提供的脚本,该脚本会删除时间戳超过 30 天的行,以便与我的 Google 表格一起使用。我希望该函数还仅删除第 4 列(“D”)仅包含“书籍”一词的行。其他行,最好是第 4 列包含“书籍”和其他字词(“书籍、衬衫”等)的行,无论日期如何。

我尝试添加一个包含该列的附加 var,但无论如何它仍在删除。也许是因为我不熟悉数组如何处理文本。

到目前为止我的代码:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Active Requests");//applies to active requests sheet only
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>=1;i--) {
var tempDate = values[i-1][0];// arrays are 0 indexed so row1 = values[0] and col1 = [0]
if ((tempDate!="") && (tempDate <= (monthOld)))
{
  sheet.deleteRow(i);
}
}
}

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    这样做非常简单。

    只需获取 D 列的值并在 if 语句中添加一个附加条件:

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Active Requests");//applies to active requests sheet only
    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>=1;i--) {
    var tempDate = values[i-1][0];// arrays are 0 indexed so row1 = values[0] and col1 = [0]
    var bookCheck = values[i-1][3];// values in column D
    if ( (tempDate!="") && (tempDate <= (monthOld)) && bookCheck=="Books")
    {
      sheet.deleteRow(i);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多