我正在嘗試根據給定的時間間隔在串列上創建一個過濾器(我的電子表格中的 2 個單元格將輸入時間戳 C4 和 C5)。我在網上搜索了一段時間,發現 Google Apps Script 中使用的 Javascript 代碼與通常的 Javascript 不同,所以我沒有找到適合我的案例的可用代碼片段。代碼是這樣的:
var beginningTimeValue = new Date('2020-01-01 ' ss.getRange("C4").getValue());
var endingTimeValue = new Date('2020-01-01 ' ss.getRange("C5").getValue());
if(!beginningTimeValue == ""){
Logger.log(beginningDateValue);
unique = unique.filter(function(row)
{
const bTime = Date.parse(row[4]);
Logger.log(bTime);
Logger.log(beginningTimeValue);
return bTime.getTime() >= beginningTimeValue.getTime();
}
);
}
row[4] 中的值是 DateTime 值(例如“12/01/2021 00:03:35”)。如果我希望時間在 08:00:00 到 13:00:00 之間,如何過濾掉這一行?
uj5u.com熱心網友回復:
三點:
- 要按兩個條件而不是一個條件進行過濾,只需將這兩個條件與
&&運算子組合起來即可。
所以:
return bTime.getTime() >= beginningTimeValue.getTime(); && bTime.getTime() <= endingTimeValue.getTime()
代替
return bTime.getTime() >= beginningTimeValue.getTime();
- 不要同時使用Date.parse()和getTime(),因為它們都是一樣的。
const bTime = Date.parse(row[4]);
如果您嘗試申請,已經以毫秒為單位回傳時間戳
bTime.getTime()
就可以了 - 這將導致錯誤。
- 小心_
Logger.log(beginningDateValue);
鑒于您的變數被呼叫beginningTimeValue而不是beginningDateValue.
樣本
假設beginningTimeValue,endingTimeValue并且unique看起來像下面的硬編碼值,那么以下代碼片段將為您正確作業:
function myFunction() {
var beginningTimeValue = new Date('2020-01-01 08:00:00');
var endingTimeValue = new Date('2020-01-01 13:00:00');
var unique = [["value","value","value","value","12/01/2021 00:03:35","value"],["value","value","value","value","01/01/2020 00:03:35","value"], ["value","value","value","value","01/01/2020 08:03:35","value"], ["value","value","value","value","01/01/2020 13:03:35","value"]]
if(!beginningTimeValue == ""){
Logger.log(beginningTimeValue);
unique = unique.filter(function(row)
{
const bTime = Date.parse(row[4]);
Logger.log(bTime);
Logger.log(beginningTimeValue);
return bTime >= beginningTimeValue.getTime() && bTime <= endingTimeValue.getTime();
}
);
console.log("unique: " unique)
}
}
更新
如果您只想比較時間(而不是日期),則需要將日期硬編碼為與
row[4]in 相同的值。為此,您可以使用方法setDate()、setMonth和setYear。beginningTimeValueendingTimeValue此外,如果您的代碼應該僅在基礎上作業,則用戶在 C4 和 C5 單元格中提供了任何一個值 - 您應該相應地調整您的代碼。
小心你的條件陳述句:即使
ss.getRange("C4").getValue()是空字串或無效輸入 -beginningTimeValue仍然不是空字串,而是 Unix 時間的開始。
樣本:
function myFunction() {
var beginningTimeValue = new Date('2020-01-01 ' ss.getRange("C4").getValue());
console.log("beginningTimeValue: " beginningTimeValue)
var endingTimeValue = new Date('2020-01-01 ' ss.getRange("C5").getValue());
console.log("endingTimeValue: " endingTimeValue)
var unique = [["value","value","value","value","12/01/2021 00:03:35","value"],["value","value","value","value","01/01/2020 00:03:35","value"], ["value","value","value","value","01/01/2020 08:03:35","value"], ["value","value","value","value","01/01/2020 13:03:35","value"]]
if(!ss.getRange("C4").getValue() == ""){
Logger.log("beginningTimeValue: " beginningTimeValue);
unique = unique.filter(function(row)
{
const bTime = new Date(row[4]);
bTime.setYear(2020);
// Be careful - months start in Javascript with 0!
bTime.setMonth(0);
bTime.setDate(1);
Logger.log(bTime);
if(ss.getRange("C5").getValue() != ""){
return bTime >= beginningTimeValue.getTime() && bTime <= endingTimeValue.getTime();
}
else{
return bTime >= beginningTimeValue.getTime();
}
}
);
console.log("unique: " unique)
}
}
- 請記住,Stackoverflow 并不是為您提供完整的解決方案,而是幫助您進行故障排除并為您提供參考和示例,引導您朝著正確的方向前進。這將允許將必要的修改合并到您的代碼中。您仍然需要對編碼有一些基本的了解才能正確地將示例應用到您的腳本中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/493929.html
