最近、GASを使った仕事を任されたので、記憶が新鮮なうちに備忘録を...。
特にスプレッドシートの取得方法は、調べてみてもgetActiveSpreadsheet()とかgetActiveSpreadsheet()を使った取得方法ばっかり出てきます。勉強用には手軽でいいけど、汎用性がそんなに高くない。
今から紹介するIDとシート名を使った方法は、ソースコードを保存する場所とシートが開かれているかを気にしなくていいので、おすすめです。
以下、ソースコードです。
function ScheduleRegister() {
// googleカレンダーの取得
const calendar = CalendarApp.getCalendarById("カレンダーID")
// // スプレッドシートの取得
// var ss = SpreadsheetApp.getActiveSpreadsheet();
// 読み取り範囲(表の始まり列と終わり行)
const topRow = 1
const topCol = 2
const numOfRow = 10
// 予定の一覧のバッファ内の行
const titleNum = 1
const startNum = 2
const endNum = 3
const dateNum = 4
// シートを取得
var sheetId = "ID(d/の後ろから/editの前まで)"
var ss = SpreadsheetApp.openById(sheetId)
var sheet = ss.getSheetByName('スプレッドシートの中のシート名(シート1とか)')
// 予定の一覧をバッファに取得
const contents = sheet.getRange(topRow, topCol, topRow + numOfRow - 1, topCol).getValues()
// 値をセット
var title = contents[titleNum][1]
var date = new Date(contents[dateNum][1])
var startTime = contents[startNum][1]
var endTime = contents[endNum][1]
// 開始時間を作成
var startDate = new Date(date)
startDate.setHours(startTime.getHours())
startDate.setMinutes(startTime.getMinutes())
// 終了時間を作成
var endDate = new Date(date)
endDate.setHours(endTime.getHours())
endDate.setMinutes(endTime.getMinutes())
// セットした値で予定作成
calendar.createEvent(
title,
startDate,
endDate
)
}
使ったスプレッドシートはこんな感じです。
1 | 2 | 3 |
---|---|---|
No | 項目 | 内容 |
1 | タイトル | ランチ |
2 | 開始時間 | 12:30 |
3 | 終了時間 | 14:00 |
4 | 日付 | 2023/1/2 |