我們新增行事曆取得行事曆ID,就可以透過程式的方式將您的內容寫到行事曆中,我們今天先用簡單的寫一整天的行事曆。
function writeCalendarEvents_one(){
//整天的寫法
var calendarId="行事曆[email protected]";//換成您要寫入的行事曆id
var cal= CalendarApp.getCalendarById(calendarId);
var title="test by sheet";
var work_date=new Date("2022/8/4");
var event = cal.createAllDayEvent(title, work_date);
}
上一篇教學每次都要在程式碼修改內容才能執行寫入,有的人就會想說可不可以讀取指定儲存格的內容來寫入行事曆,我們這次就用上一個範例修改來做教學。
function writeCalendarEventsByRange(){
//整天的寫法
var calendarId="行事曆[email protected]";//換成您要寫入的行事曆id
var cal= CalendarApp.getCalendarById(calendarId);
var sheet = SpreadsheetApp.getActiveSheet(); //取得目前作用中的試算表
var title=sheet.getRange("A1").getValue();//取得儲存格A1的內容值
var work_date=sheet.getRange("B1").getValue();
var event = cal.createAllDayEvent(title, work_date);
}
除了每次都到App Script去選取函數並執行,有沒有可以像excel一樣可以設定一個按鈕去執行,並於執行完畢可以彈出一個視窗告訴我們,今天就來說明如何操作。
function writeCalendarEventsByRangeButton(){
//整天的寫法
var calendarId="行事曆[email protected]";//換成您要寫入的行事曆id
var cal= CalendarApp.getCalendarById(calendarId);
var sheet = SpreadsheetApp.getActiveSheet(); //取得目前作用中的試算表
var title=sheet.getRange("A1").getValue();//取得儲存格A1的內容值
var work_date=sheet.getRange("B1").getValue();
var event = cal.createAllDayEvent(title, work_date);
Browser.msgBox("執行結果","成功", Browser.Buttons.OK);
}
之前一筆寫入的行事曆沒有問題後,我們就會想說多筆的話要如何做,就是用迴圈的方式來作,google的寫入是有限制的,就是每分鐘可以寫入60次的限制,超過就要使用延遲的指令。
function writeCalendarEventsByRangeForButton(){
//作者:彰化一整天
var calendarId="行事曆[email protected]";//換成您要寫入的行事曆id
var cal= CalendarApp.getCalendarById(calendarId);
var sheet = SpreadsheetApp.getActiveSheet(); //取得目前的試算表
// var sheet =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("工作表1"); //取得工作表1的試算表
var lastRow=sheet.getLastRow(); //取得儲存格的列數
var work_date;
var title;
for(var i=2;i<=lastRow;i++)//從第2筆開始讀取
{
title= sheet.getRange("A"+i).getValue();
work_date= sheet.getRange("B"+i).getValue();
event = cal.createAllDayEvent(title, work_date);
}
Browser.msgBox("執行結果","成功", Browser.Buttons.OK);
}