Javascript 如果小于当前日期,则删除范围内的单元格

Javascript 如果小于当前日期,则删除范围内的单元格,javascript,date,google-apps-script,google-sheets-api,Javascript,Date,Google Apps Script,Google Sheets Api,我有一个纯文本格式的日期范围(必须保持这种方式),如果每个范围单元格中的日期小于当前日期,我需要在凌晨1点清除这些日期。我可以稍后设置跑步计划,但是有人能告诉我为什么这不起作用吗 我使用=TEXT(TODAY(),“m/dd”)在单元格AE3中以正确的格式插入当前日期 谢谢大家! function clearOldDate() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheet

我有一个纯文本格式的日期范围(必须保持这种方式),如果每个范围单元格中的日期小于当前日期,我需要在凌晨1点清除这些日期。我可以稍后设置跑步计划,但是有人能告诉我为什么这不起作用吗

我使用=TEXT(TODAY(),“m/dd”)在单元格AE3中以正确的格式插入当前日期

谢谢大家!

function clearOldDate() 
{

    var ss = SpreadsheetApp.getActiveSpreadsheet();  
    var sheet = ss.getSheetByName("Loads");
    var cells = sheet.getRange('AC9:AE33').getValues();
    var data = [cells];

    var date = sheet.getRange('AE3').getValues();
    //var Sdate = Utilities.formatDate(date,'GMT+0900','MM/dd');



    for(i=0; i<76; i++) 
    {


          if (date > data[i])
          {
              data[i].clear();  
          };
    };
 };
函数clearOldDate() { var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getSheetByName(“负载”); var cells=sheet.getRange('AC9:AE33').getValues(); var数据=[单元格]; var date=sheet.getRange('AE3').getValues(); //var Sdate=Utilities.formatDate(日期,'GMT+0900','MM/dd'); 对于(i=0;i数据[i]) { 数据[i].clear(); }; }; };
这应该可以做到

function clearOldDate() 
{

    var ss = SpreadsheetApp.getActiveSpreadsheet();  
    var sheet = ss.getSheetByName("LogSheet");
    //getValues gives a 2D array. 
    var data = sheet.getRange('AC9:AE33').getValues();

    var date = sheet.getRange('AE3').getValues();
    //var Sdate = Utilities.formatDate(date,'GMT+0900','MM/dd');


    //This for loop with loop through each row
    for(i=0; i<data.length; i++) 
    {
          //This for loop with loop through each column
         for (var j = 0; j < data[i].length ; j ++){
          //This assumes Column AC has the dates you are comparing aganist
          if (date > data[i][j])
           {   
              //sets that the Row with index i to empty
              data[i] =  ["","",""]
           };
          }
    };
     //finally set the value back into sheet
     sheet.getRange('AC9:AE33').setValues(data)
     };
函数clearOldDate() { var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getSheetByName(“日志表”); //getValues提供一个2D数组。 var data=sheet.getRange('AC9:AE33').getValues(); var date=sheet.getRange('AE3').getValues(); //var Sdate=Utilities.formatDate(日期,'GMT+0900','MM/dd'); //这是一个for循环,循环通过每一行 对于(i=0;i数据[i][j]) { //将索引为i的行设置为空 数据[i]=[“”,“”,“”] }; } }; //最后将值设置回工作表中 sheet.getRange('AC9:AE33')。设置值(数据) }; 基本上,修改数据数组后需要设置值

注意:当值存储为文本时,此语句(日期>数据[i][0])无法按预期工作


编辑:修改了代码并添加了一个新的for循环,以根据注释遍历每一列

这确实在AC中清除了日期,但对于我来说并不完全有效,因为任何列中都可能有旧日期。AC、AD、orAE。AC9:AE33中的每个单元格都需要单独考虑。您可以通过在第一个for循环中添加另一个for循环来解决这一问题,以在每列中递增。我更新了代码,应该按照您希望的方式运行到Hanks Jagannathan!我必须将数据[I]=[“”,“”,“”]更改为数据[I][j]=[“”];它只删除每个单元格中的旧日期,而不是整行,但非常有用!!!现在有没有关于如何使用此代码将日期增加1天的想法?