我需要每周更新一次作業表中的日期。
我想手動運行一個腳本來做到這一點。
“C”列中的每個日期將在同一行的“D”列中增加天數。只會更新特定單元格(示例中為 F2)中某個日期之前的日期。
以這張表為例:https : //docs.google.com/spreadsheets/d/11f6G5_vNK5Z8UR2A_MUUXpL8awC2mJ8ozpnznWQ_anM/edit?usp=sharing
| C 欄 - 服務日期 | D 欄 - 提前天數 |
|---|---|
| 12/3/2021 | 7 |
| 12/3/2021 | 14 |
| 12/10/2021 | 7 |
| 12/10/2021 | 7 |
| 12/17/2021 | 28 |
任何幫助或指向正確的方向都會很棒!
uj5u.com熱心網友回復:
function updateDates() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const vs = sh.getRange(2,1,sh.getLastRow() - 1, sh.getLastColumn()).getValues();
const dt = new Date(sh.getRange('F2').getValue());
const dthv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
const oA = [];
vs.forEach(r => {
let d = new Date(r[2]);
let dv = new Date(d.getFullYear(),d.getMonth(),d.getDate()).valueOf();
if(dv < dthv) {
oA.push([new Date(d.getFullYear(),d.getMonth(),d.getDate() r[3])]);
} else {
oA.push([r[2]]);
}
});
sh.getRange(2,3,oA.length,oA[0].length).setValues(oA);
}
表 0 之前:
| COL1 | COL2 | COL3 | COL4 | COL5 | COL6 |
|---|---|---|---|---|---|
| 11/10/2021 | 5 | 11/15/2021 | |||
| 11/11/2021 | 6 | ||||
| 11/12/2021 | 7 | ||||
| 11/13/2021 | 8 | ||||
| 11/14/2021 | 9 | ||||
| 11/15/2021 | 10 | ||||
| 11/16/2021 | 11 | ||||
| 11/17/2021 | 12 | ||||
| 11/18/2021 | 13 | ||||
| 11/19/2021 | 14 | ||||
| 11/20/2021 | 15 | ||||
| 11/21/2021 | 16 | ||||
| 11/22/2021 | 17 | ||||
| 11/23/2021 | 18 | ||||
| 11/24/2021 | 19 |
Sheet0 之后:
| COL1 | COL2 | COL3 | COL4 | COL5 | COL6 |
|---|---|---|---|---|---|
| 11/15/2021 | 5 | 11/15/2021 | |||
| 11/17/2021 | 6 | ||||
| 11/19/2021 | 7 | ||||
| 11/21/2021 | 8 | ||||
| 11/23/2021 | 9 | ||||
| 11/15/2021 | 10 | ||||
| 11/16/2021 | 11 | ||||
| 11/17/2021 | 12 | ||||
| 11/18/2021 | 13 | ||||
| 11/19/2021 | 14 | ||||
| 11/20/2021 | 15 | ||||
| 11/21/2021 | 16 | ||||
| 11/22/2021 | 17 | ||||
| 11/23/2021 | 18 | ||||
| 11/24/2021 | 19 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374811.html
