我試圖檢查 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);
}
}
}
}
uj5u.com熱心網友回復:
本周的日期
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)
)
});
}
uj5u.com熱心網友回復:
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()方法將 2D 陣列轉換為 1D 陣列:var v = s.getRange("A1:A").getValues().flat();. 在這種情況下,您可以使用一個索引來處理陣列的值:v[0], v[1], v[2]。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/426130.html
