嗨,我使用此腳本通過在現有作業表名稱前面插入“副本”來重命名每張作業表,其中單元格“B36”中的文本 =“SAFETY ANALISIS”和單元格“K3”中的日期早于 30 天。我的問題與我無法弄清楚如何去做的日期有關。單元格“K3”單元格采用“1-Aug-2021”格式,我想我需要將“K3”中的日期轉換為數字格式。任何幫助將不勝感激
function getSheet() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var sum = 0;
for (var i = 0; i < sheets.length ; i ) {
var sheet = sheets[i];
var date = new Date();
var ageInDays = 30;
var threshold = new Date(
date.getFullYear(),
date.getMonth(),
date.getDate() - ageInDays)
.getTime();
var val = sheet.getRange('K3').getValue();
var val2 = sheet.getRange('B36').getValue();
if (val >= threshold && val2 == 'SAFETY ANALYSIS') {
var sheetName = sheet.getName()
sheet.setName('Copy Of ' sheetName)
}
}
}
uj5u.com熱心網友回復:
您可能希望將從單元格獲得的值包裝K3在Date()建構式中。這應該適用于電子表格日期以及看起來像日期的文本字串。
我認為您val >= threshold以錯誤的方式進行比較。嘗試這樣的事情:
function renameOldSafetyAnalysisSheets() {
const timeLimit = 30 * 24 * 60 * 60 * 1000; // 30 days
const now = new Date();
const sheets = SpreadsheetApp.getActive().getSheets();
sheets.forEach(sheet => {
if (sheet.getRange('K3').getValue() !== 'SAFETY ANALYSIS') {
return;
}
const date = new Date(sheet.getRange('B36').getValue());
if (!date.getTime()
|| now.getTime() - date.getTime() < timeLimit) {
return;
}
try {
sheet.setName('Copy of ' sheet.getName());
} catch (error) {
;
}
});
}
uj5u.com熱心網友回復:
function getSheet() {
const shts = SpreadsheetApp.getActive().getSheets();
let d = new Date();
let ageInDays = 30;
let threshold = new Date(d.getFullYear(),d.getMonth(),d.getDate() - ageInDays).valueOf();
shts.forEach(sh => {
let val = new Date(sh.getRange('K3').getValue()).valueOf();
let val2 = sh.getRange('B36').getValue();
if (val >= threshold && val2 == 'SAFETY ANALYSIS') {
sh.setName('Copy Of ' sh.getName())
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314895.html
