ごみ収集カレンダーの予定をgoogleカレンダーに一気に登録したくて、作ってみました。
普通に予定表をエクセルなどから貼り付けても使えますし、一気に予定を追加するのに便利だと思います。
2.以下のコードを、「拡張機能」→「Apps Script」にコピペしてください。
※色の指定はメインの予定表なら機能すると思います。
※1箇所だけ設定が必要で、登録したいカレンダーのIDが必要です。
GAS
function googleカレンダーに予定を追加する() {
// googleカレンダーの取得(追加したいカレンダーのIDを設定からコピーして入れてね)
const calender = CalendarApp.getOwnedCalendarById("カレンダーID.google.com")
// 読み取り範囲(表の始まり行と終わり列)
const topRow = 3 //始まりの行
const lastCol = 7 //終わりの列
const statusCellCol = 1 //追加「済」が入る列
// 予定の一覧バッファ内の列(0始まり)
const statusNum = 0
const dayNum = 1
const startNum = 2
const endNum = 3
const titleNum = 4
const locationNum = 5
const descriptionNum = 6
// シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
// 予定の最終行を取得
let lastRow = sheet.getLastRow()
//予定の一覧をバッファに取得
const contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues()
//順に予定を作成
for (let i = 0; i <= lastRow - topRow; i++) {
//「済」の場合は無視する
if (contents[i][statusNum] === "済") {
continue
}
// 値をセット 日時はフォーマットして保持
let day = contents[i][dayNum]
let startTime = contents[i][startNum]
let endTime = contents[i][endNum]
let title = contents[i][titleNum]
// 場所と詳細をセット
let options = { location: contents[i][locationNum], description: contents[i][descriptionNum] }
console.log(day + " " + contents[i][titleNum])
// 色の指定
if (title === 'もえるごみ') {
title = "もえるごみ";
var color = "5"
} else if (title === '古紙類') {
title = "古紙類";
var color = "3";
} else {
var color = "1";
}
try {
// 開始終了時刻が無ければ終日で設定
if (startTime == '' || endTime == '') {
//予定を作成
// カレンダーに終日のイベントを作成
var event
calender.createAllDayEvent(title, day).setColor(color);
// 開始終了時刻があれば範囲で設定
} else {
// 開始日時を作成
let startDate = new Date(day)
startDate.setHours(startTime.getHours())
startDate.setMinutes(startTime.getMinutes())
// 終了日時を作成
let endDate = new Date(day)
endDate.setHours(endTime.getHours())
endDate.setMinutes(endTime.getMinutes())
// 色の指定
if (title === 'もえるごみ') {
title = "もえるごみ";
var color = "2"
} else if (title === '古紙類') {
title = "古紙類";
var color = "3";
} else {
var color = "1";
}
// 予定を作成
calender.createEvent(
title,
startDate,
endDate,
options
).setColor(color);
}
//予定が作成されたら「済」にする
sheet.getRange(topRow + i, statusCellCol).setValue("済")
// エラーの場合ログ出力する
} catch (e) {
Logger.log(e)
}
}
// 完了通知
var msg = "googleカレンダーに予定を追加しました。";
var title = "通知";
var sec = 3;//マイナスでずっと表示
SpreadsheetApp.getActiveSpreadsheet().toast(msg, title, sec);//toastメソッドでポップアップ表示する
}
スプレッドシート上にボタンを追加してマクロを登録するか、拡張機能からマクロをインポートして使用してください。
テストする際は、少しずつ登録してください。一気に登録すると間違っていた場合に削除が大変です。