■このページを読んだ後わかること
GAS(GoogleAPI)を使用したGoogleカレンダーへの予定登録コードがわかります。
社内など同じGoogleworkPlaceに管理された状況を想定しています。
■GASに使用するスプレッドシート
![](https://shosinsyamuke.com/wp-content/uploads/2023/01/GAS-1.png)
〇項目の説明
カレンダー:ここが空白の場合処理を実行します。
メールアドレス:カレンダー登録したいメールアドレスを記載してください。
苗字:予定の名前になります。デフォルトでは○○さん予定にしています。
予定日:こちらは登録したい日付になります。例のように記載してください。 2022/12/16
添付スプレッドシート:こちらはURLを記載しておくと、メール文中に含めることができます。
■実際のコード
// シートを取得
varsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
varsheet = ss.getSheets()[0];
// * Googleカレンダーに予定を追加する。0番目のスプレッドシートで実行
functionCreatetcalender() {
// googleカレンダーの取得
// const calender = CalendarApp.getDefaultCalendar()
// 連携するアカウント
constgAccount = Session.getActiveUser().getUserLoginId()// 実行者のメールアドレスを取得する
// googleカレンダーの取得
varcalender = CalendarApp.getCalendarById(gAccount);
// 読み取り範囲(表の始まり行と終わり列)
consttopRow = 2
constlastCol = 5
// 予定の最終行を取得
varlastRow = sheet.getLastRow(); //このシートで取得できる最後の行
varstatusNum = 0;
varstartRow = 2; //2行目からデータが始まる
vardataRange = sheet.getRange(startRow,1,lastRow,4); //何行目から何行目までデータをとるか
vardata = dataRange.getValues(); //データの範囲から複数取得
constdayCellNum = 2;
conststartCellNum = 2;
constendCellNum = 2;
Utilities.formatDate(newDate(dayCellNum), "JST", "yyyy/MM/dd HH:mm:ss");
consttitleCellNum = 4;//予定登録名
constmember = 1;//カレンダー登録対象者
//予定の一覧をバッファに取得
constcontents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues()
//順に予定を作成
for (leti = 0; i <= lastRow - topRow; i++) {
//「登録済」の場合は無視する
if (contents[i][statusNum] === "登録済") {
continue
}
// 値をセット 日時はフォーマットして保持
letstartday = contents[i][dayCellNum]
letstartTime = contents[i][startCellNum]
letendday = contents[i][endCellNum]
letendTime = contents[i][endCellNum]
lettitle = contents[i][titleCellNum]
letguests = contents[i][member]+"test@gmail.com"
//
// 場所と詳細をセット
try {
// 開始終了時刻が無ければ終日で設定
if (startTime == '' || endTime == '') {
//予定を作成
event = calender.createAllDayEvent(
title,
startday,
// endday,
options
)
// 開始終了時刻があれば範囲で設定
} else {
// 開始日時を作成
letstartDate = newDate(startday)
startDate.setHours(startTime.getHours())
//startDate.setMinutes(startTime.getMinutes())
letendDate = newDate(endday)
//endDate.setHours(endTime.getHours())
endDate.setMinutes(endTime.getMinutes()+15); //開始時刻から15分後を終了時刻としています。
varoptions = {guests}
// 予定を作成
event = calender.createEvent(
title+"予定登録",//カレンダー件名
startDate,
endDate,
options
)
}
//予定が作成されたら「済」にする
sheet.getRange(topRow + i, 1).setValue("登録済")
// エラーの場合ログ出力する
} catch (e) {
Logger.log(e)
}
}
// 完了通知
Browser.msgBox("予定を追加しました。")
}
GASについて
何度かGASを作成されたことのある人は気づいたかもしれませんが
GoogleApiを使用しているので、全く無関係の方などは登録できません。
Api上で管理者権限を持っているとこちらの登録は非常に重宝します。
最初はわからないかもしれませんが、たくさん作って慣れていきましょう。
下記は私がGASを初めた時から使用している教本です。
完全初心者向けのでとても分かりやすいです。
created by Rinker
¥2,860
(2024/09/08 10:05:53時点 楽天市場調べ-詳細)
GAS関連