LoginSignup
1
1

More than 1 year has passed since last update.

【コピペOK】スプレッドシートから取得したデータでカレンダーに予定を追加する方法

Last updated at Posted at 2022-12-27

最近、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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1