如何回圈將月份添加到每個日期,直到滿足條件?
解釋:我想每次都給每個日期加上 3 個月,直到年度列(D 列)大于今天的日期(E 列)。

示例:如果我們取年度列“01/02/2021”的第一行并且我們在前 3 個月添加結果將是 01/05/2021 然后我們第二次添加 3 個月 01/08/2021 ..etc直到 01/05/2022(大于今天的日期)。
在“H”列中,我寫了我想要的結果,但我得到的結果在 Red 的“F”列中。
這是我的代碼:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
for (var i = 2; i < 12; i ) {
var today_date = ss.getRange(i, 5).getValue();
var today_date_format = Utilities.formatDate(new Date(today_date), "Europe/Paris", 'MMMM dd, yyyy 12:00:00 Z');
var Date_2021 = ss.getRange(i, 4).getValue();
var Date_2021_Format = Utilities.formatDate(new Date(Date_2021), "Europe/Paris", 'MMMM dd, yyyy 12:00:00 Z');
var Date_2021_constructed = new Date(Date_2021_Format);
var a3date = Date_2021_constructed.getMonth();
Date_2021_constructed.setMonth((a3date 3) % 12);
do {
Date_2021_constructed = Date_2021_constructed.setMonth((a3date 3) % 12);
} while (Date_2021_constructed > today_date_format);
ss.getRange(i, 6).setValue(Date_2021_constructed)
}
}
這是我的資料螢屏:
在此處輸入影像描述
uj5u.com熱心網友回復:
感謝您的示例和幫助很大的影像:
我將建議一個快速修復,看看它是否有效。看起來您可能會在 f 列中以毫秒為單位發布日期值。所以試試這個:
ss.getRange(i, 6).setValue(new Date(Date_2021_constructed)).setNumberFormat("dd/MM/yyyy");
如果這不起作用,我會仔細研究一下,從電子表格中獲取值表會很有幫助,以便我進行測驗。
如果上述解決方案不起作用,請嘗試以下操作:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet1');
const vs = sh.getRange(2,1,sh.getLastRow() - 1,5).getValues();
vs.forEach((r,i) => {
let td = new Date(r[4]);
let tdv = td.valueOf();
let ad = new Date(r[3]);
let m = r[2];
let n = 1;
do{
var fd = new Date(ad.getFullYear(),ad.getMonth() (n * m), ad.getDate());
var fdv = fd.valueOf();
}while(fdv<tdv);
sh.getRange(i 2,6).setValue(fd).setNumberFormat("dd/MM/yyyy");
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447619.html
標籤:javascript 循环 谷歌应用脚本 做时
上一篇:Google-App-Scriptbase64vsjavascriptbase64解碼
下一篇:將不同的檔案共享到不同的電子郵件
