スプレッドシートで就活のスケジュール管理をしており、自動でGoogleカレンダーに反映されるようにしたいのですが、うまくいきません。プルダウンの「締切」などを選択するとカレンダーに「企業名・締切」と表示されるようにしたいです。
全くの素人なのでお願いします。
スプレッドシートURL
https://docs.google.com/spreadsheets/d/13snGz2ImWDnCLuSLll0Rzp4--ceuuSTlBg76SgquyqY/edit?usp=sharing
コード
/**
- Googleカレンダーに予定を追加する
*/
function CreateSchedule() {
// googleカレンダーの取得
const calendar = CalendarApp.getDefaultCalendar()
// 読み取り範囲(表の始まり行と終わり列)
const topRow = 2
const lastCol = 78
const statusCellCol = 1 //済の列
// 予定の一覧バッファ内の列(0始まり)
const statusNum = 0 //済の列
const startNum = 2 //開始時刻
const endNum = 3 //終了時刻
const titleNum = 4 //企業名
const locationNum = 5 //締切、結果、実施
const descriptionNum = 6 //説明
//予定の一覧バッファ内の行(0始まり)
const dayNum = 5 //日の行
// シートを取得
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[dayNum][i]
let startTime = contents[1][1]
let endTime = contents[2][1]
let title = contents[i][titleNum]
// 場所と詳細をセット
let options = { location: contents[i][dayNum], description: contents[3][1] }
console.log(day + ""+ contents[i][titleNum])
try {
// 開始終了時刻が無ければ終日で設定
if (startTime == '' || endTime == '') {
//予定を作成
calendar.createAllDayEvent(
title,
day,
options
)
// 開始終了時刻があれば範囲で設定
}
//予定が作成されたら「済」にする
sheet.getRange(topRow + i, statusCellCol).setValue("済")
// エラーの場合ログ出力する
} catch (e) {
Logger.log(e)
}
}
// 完了通知
Browser.msgBox("予定を追加しました。")
}

あなたの回答
tips
プレビュー