我為學校建立了這個考勤跟蹤器。電子表格可以按原樣使用,但我希望在您的幫助下能做得更好。每天早上,apps 腳本都會復制模板并對其進行重命名。值從資料表中提取到表中(在實時版本中,資料表是從 Google 表單填充的)。為了改進電子表格,我只想在 today() 是 Calendar!A2:A 范圍內的日期之一時運行腳本。電子表格鏈接在這里。當前代碼如下。
//=================================================================================
// Creates a copy template and renames the new sheet between 0200-0300 every day
//=================================================================================
function createNewSheet(){
const sh = SpreadsheetApp.getActiveSpreadsheet();
const ss = sh.getSheetByName("Template");
const prot = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
const date = Utilities.formatDate(new Date(),"America/New_York","dMMMyy")
let nSheet = ss.copyTo(sh).setName(date);
nSheet.showSheet()
let p;
for (let i in prot){
p = nSheet.getRange(prot[i].getRange().getA1Notation()).protect();
p.removeEditors(p.getEditors());
if (p.canDomainEdit()) {
p.setDomainEdit(false);
}
}
//copy and paste date
const daily = sh.getSheetByName(date);
daily.getRange('B1').activate();
daily.getCurrentCell().setFormula('=today()');
SpreadsheetApp.flush();
daily.getRange('B1').copyTo(daily.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 當今天的日期包含在
Calendar!A2:A
.
在這種情況下,如何進行以下修改?
從:
function createNewSheet(){
const sh = SpreadsheetApp.getActiveSpreadsheet();
至:
function createNewSheet(){
const sh = SpreadsheetApp.getActiveSpreadsheet();
const today = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "M/d/yyyy");
const sheet = sh.getSheetByName("Calendar");
const res = sheet.getRange("A2:A" sheet.getLastRow()).createTextFinder(today).findNext();
if (!res) return;
或者
function createNewSheet(){
const sh = SpreadsheetApp.getActiveSpreadsheet();
const today = new Date();
const todayYear = today.getFullYear();
const todayMonth = today.getMonth();
const todayDate = today.getDate();
const sheet = sh.getSheetByName("Calendar");
const res = sheet.getRange("A2:A" sheet.getLastRow()).getValues().some(([a]) =>
a.getFullYear() == todayYear && a.getMonth() == todayMonth && a.getDate() == todayDate
);
if (!res) return;
- 在這些修改中,當今天的日期包含在 的單元格中時
Calendar!A2:A
,將運行以下腳本if (!res) return;
。 - 在第一次修改中,日期值用作字串。
- 在第二次修改中,日期值用作日期物件。
參考:
- 創建文本查找器(查找文本)
- formatDate(日期,時區,格式)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506745.html