我制作了一個腳本來按日期升序排列電子表格行,它應該隱藏月份與我們當前所在的月份不同的所有行。這是腳本:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Diário de Caixa');
sheet.getRange('A3:M').activate();
sheet.getActiveRange().sort({column: 6, ascending: true});
var r = sheet.getRange('C3:C');
var date = new Date();
var mesAtual = Utilities.formatDate(date, Session.getScriptTimeZone(), "M");
var v = r.getValues();
for(var i=v.length 1;i>=0;i--){
if(v[0,i]!=mesAtual){
sheet.hideRows(i);
}
}
}
在我寫這個問題的時候,我的資料已經填充到第 36 行,所以腳本應該隱藏第 36 行下面的所有行,但它也隱藏了第 34、35 和 36 行,即使他們的公式和 value 與第 3 行到第 33 行相同,它們都回傳“1”,代表一月。
缺少了什么?
提前致謝!
uj5u.com熱心網友回復:
我相信這v[0,i]應該是v[i][0]
這var r = sheet.getRange(3, 3, sheet.getLastRow() -2);會比這更好var r = sheet.getRange('C3:C');......在除錯器中看看這個。您經常在 getLastRow() 和 maxRows 之間得到空值。
您還可以使用var r = sheet.getRange('C3:C').getValues().filter(e => e[0]);和消除具有虛假和真實的空值
您還可以使用 valueOf() 和 getTime() 進行大量日期比較,因為它們都回傳參考日期的毫秒數,因此您可以對它們進行數字比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416105.html
標籤:
