ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
スプレッドシートからGoogleカレンダーに予定を流し込む(インポート、連携する)方法
スプレッドシートに記載した予定をGoogleカレンダーに連動させることができます。
「GASって何?」状態であってもコピペで簡単にできます。
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- Googleスプレッドから一気に指定のカレンダーに添付ファイル付きで予定を登録することができます。
なので、サクッとマスターして
と答えてあげてください。
いただいた質問
動画はこちら
シートはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)
スクリプト
/**
* 指定のGoogleカレンダーに予定を添付ファイル付きで追加する
* 制限事項:終日の予定には未対応、添付ファイルがない予定には未対応
*/
function CreateSchedule_attachment() {
// googleカレンダーの取得
const calendarId = 'カレンダーID'; //★カレンダーID
// 読み取り範囲(表の始まり行と終わり列)
const topRow = 2
const lastCol = 9
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 urlNum = 7
const attachtitleNum = 8
// シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
// 予定の最終行を取得
let lastRow = sheet.getLastRow()
//予定の一覧をバッファに取得
const contents = sheet.getRange(topRow, 1, lastRow, 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]
if (day === "") //日付データがなければ抜ける
break
// 開始日時を作成
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())
//パラメータの生成
let eventParam = {
summary: contents[i][titleNum], // カレンダーの予定名
description: contents[i][descriptionNum], // 概要
location: contents[i][locationNum], // 場所
start: {
'dateTime': startDate.toISOString(),
'timeZone': 'Asia/Tokyo'
},
end: {
'dateTime': endDate.toISOString(),
'timeZone': 'Asia/Tokyo'
},
attachments: [{
fileUrl: contents[i][urlNum], //添付ファイルのURL
title: contents[i][attachtitleNum], //添付ファイルのタイトル
}]
}
console.log(eventParam)
Calendar.Events.insert(eventParam, calendarId, { supportsAttachments: true });
//予定が作成されたら「済」にする
sheet.getRange(topRow + i, statusCellCol).setValue("済")
};
// エラーの場合ログ出力する
// } catch (e) {
// Logger.log(e)
// }
// 完了通知
// Browser.msgBox("予定を追加しました。")
}
ポイント
- Calendar API の登録
添付ファイルを付加したい場合は、CalenderAppではなくて
Calenderサービスなるものを使用する必要があります。
- カレンダーIDの登録
カレンダーIDの取得方法はこちら↓
Google Calendar API の登録
Step1.
①「サービス」の右の「+」をクリックします。
②「Google Calendar API」をクリックします。(IDに「Calender」と表示されます)
③「追加」をクリックします。
「Google Calendar API」が追加されるとサービスの下に「Calendar」と表示されます。
制限事項
終日の予定には未対応
添付ファイルがない場合も添付ファイルのアイコンが付加
注意事項
添付ファイルは、共有権限がないと閲覧不可
最後までご覧いただきありがとうございます。
つぎはこちら
【GAS】Googleカレンダーに日付またぎ(時間指定)で登録する方法
スプレッドシートに記載した予定をGoogleカレンダーに反映させることができます。
日付をまたいだ予定でも反映されます。
以下のサイトを参考にさせていただきました。