簡體   English   中英

如何檢查單元格中的日期是否為本周? 腳本不是工作表 function

[英]How can I check if a date in a cell is this week? Script not sheet function

我正在嘗試檢查 A 列中的日期是否為本周,然后顯示該行。

我的問題是我的變量“t”在調試器中未定義,運行時出現以下錯誤...

異常:無效參數:日期。 應該是類型:日期

 function weekNumberTest()
{
      var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName("Test");
        var v = s.getRange("A1:A").getValues();
  var data = Utilities.formatDate(new Date(), "GMT", "w");//Exception: Invalid argument: date. Should be of type: Date

for (var i = s.getLastRow(); i > 2; i--) 
{
        var t = v[i ];
        if (t != "") 
        {
            var testDateCell=Utilities.formatDate(t, "GMT", "w");
            if (testDateCell==data ) 
            {
                s.showRows(i);
            }
        }
    }
}

本周日期

function weekNumberTest() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Test");
  const vs = sh.getRange(2,1,sh.getLastRow()-1).getValues().flat();
  const wk = parseInt(Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), "w"));
  vs.forEach((d,i) => {
    let w =parseInt(Utilities.formatDate(new Date(d),ss.getSpreadsheetTimeZone(),"w"));
    if(w == wk || w == wk - 1) {//try this for last two weeks. This may not work at beginning of year...I don't know for sure.
      sh.showRows(i + 2);
    } else (
      sh.hideRows(i + 2)
    )
  });
}
function weekNumberTest() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Test");
  var v = s.getRange("A1:A").getValues();
  var data = Utilities.formatDate(new Date(), "GMT", "w");

  for (var i = s.getLastRow(); i > 2; i--) {
    var t = new Date(v[i][0]); // <---------------- the error was here
    if (t != "") {
      var testDateCell = Utilities.formatDate(t, "GMT", "w");
      if (testDateCell == data) {
        s.showRows(i);
      }
    }
  }
}

要獲取本周和上周的日期,您可以這樣更改一行:

if (testDateCell == data || testDateCell == data-1) {

解釋

var v = s.getRange("A1:A").getValues(); 它為您提供了一個二維數組[[a],[b],[c]] 要從二維數組中獲取值,您需要使用兩個索引: v[0][0]v[0][1]v[0][2]

或者,您可以使用flat()方法以這種方式將二維數組轉換為一維數組: var v = s.getRange("A1:A").getValues().flat(); . 在這種情況下,您可以使用一個索引來尋址數組的值: v[0]v[1]v[2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM