ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回

スプレッドシートからGoogleカレンダーに登録する方法
Googleカレンダー関連
ご訪問ありがとうございます。
Googleシートマスターのひろしです。前回
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
スプレッド...
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- スプレッドシートに記載した予定をGoogleカレンダーに反映させることができます。
- 「GASって何?」状態であってもコピペで簡単にできます。
逆に、知らないと
Googleカレンダーに
チマチマと予定を1つづつ
入力するという、なんとも残念な
作業が永遠に続きます。
せっかく便利なGoogleカレンダーなのに
残念な作業をしていたのでは、本末転倒です。
さくっと、スプレッドシートから
予定を流し込みこんな感じで答えてあげてください。
では、マインドセットします。
マインドセット
Googleカレンダーにまとまった予定を
一つづつ入れたら負け
Googleカレンダーにまとまった予定を
一つづつ入れたら負け
Googleカレンダーに予定をまとめて入力する際は、
ぜひ、スプレッドシートから入力してください。
以下のように入力するだけで
こんなふうにGoogleカレンダーに
展開されます。
では、動画をご覧ください。
動画はこちら
★Googleカレンダーに複数の予定をまとめて入力する方法(Googleスプレッドシート)[字幕あり]
スクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
/** * Googleカレンダーに予定を追加する */ function CreateSchedule() { // googleカレンダーの取得 const calendar = CalendarApp.getDefaultCalendar() // 読み取り範囲(表の始まり行と終わり列) const topRow = 2 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]) try { // 開始終了時刻が無ければ終日で設定 if (startTime == '' || endTime == '') { //予定を作成 calendar.createAllDayEvent( title, day, options ) // 開始終了時刻があれば範囲で設定 } 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()) // 予定を作成 calendar.createEvent( title, startDate, endDate, options ) } //予定が作成されたら「済」にする sheet.getRange(topRow + i, statusCellCol).setValue("済") // エラーの場合ログ出力する } catch (e) { Logger.log(e) } } // 完了通知 Browser.msgBox("予定を追加しました。") } |
今回のGoogleシートマスターへの究極の方法です。
Step1.
Googleカレンダーを開く
Step2.
サンプルシートを開き
https://technical.verybestcbp.com/e6x1
シートをコピーする
Googleカレンダーを開く
Step2.
サンプルシートを開き
https://technical.verybestcbp.com/e6x1
シートをコピーする
Step3.
スクリプトをコピペする
Step4.
予定を書き換え実行する
早速、Googleカレンダーを
開いてください。
今すぐです。
最後までご覧いただきありがとうございます。
さらに色の追加やカレンダーを指定したい場合はこちら

スプレッドシートからGoogleカレンダーに予定を流し込む(インポートする)方法2(色、カレンダーの指定あり)
スプレッドシートから予定を入力する方法「全体像」
ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなた...
スクリプトの中身について知りたい場合はこちら
コメント
予定ごとに色をつけたい場合はどの様にすればいいですか?
色をつける事自体は、イベント.setColor(色)
とやればできるのですが、色を選択させる仕組みが
必要となります。
https://technical.verybestcbp.com/gascalcolor/
チュートリアルはこちら
https://technical.verybestcbp.com/registcalall/
YouTube拝見し、楽しく勉強させていただいております。
質問させていただきます。
①スプレッドシートに入力した項目に変更があった場合のカレンダーへの反映
②登録した内容を削除したい場合
はどのようにすれば良いでしょうか?
ご教示ください。よろしくお願い致します。
質問ありがとうございます。
いい質問ですね。確かに考えられるシュチュエーションです。
ただ、かっこよく変更するためには、作成時にその予定のIDを
一覧に保持する必要があるので、それなりに工数がかかります。
運用でカバーするのであれば「削除→追加」という流れになります。
予定の削除は、
https://technical.verybestcbp.com/registfromsheet/
に「Googleカレンダーから削除」するロジックがあります。
なので例えば、上記の削除するロジックを使用し以下の処理を追加します。
【DeleteEvent() 予定削除ルーチン】
①「DEL」の文字列を行の予定を削除する。
②「DEL」の文字列を削除する
そうすれば、予定を変更する場合、ユーザーは
①変更する予定の「済」を「DEL」に変更する
②DeleteEvent()を実行し、変更したい予定を削除する
③「DEL」が消えた行を新しい予定に変更する
といった感じで実現できます。
ご回答いただきありがとうございます。
予定削除はそれを使えば良いのですね!確かに、ご教示いただいた内容で作成できそうです!
ありがとうございます!
あ、すみません。
【DeleteEvent() 予定削除ルーチン】は、その日の予定をすべて
削除してしまいました。
個別の予定を削除するには、やはり予定作成時にeventidをシート上に
保持しておく必要がありますね。
今度、時間があるときに試します。
スプレッドシートからGoogleカレンダーに新規で追加した予定の「変更・削除」を是非、動画にあげて解説いただけると助かります!
一括削除など他のサイトで掲載されているものの、あまり現実的ではないものの方が多く…
楽しみに待っています!!
よろしくお願いいたします。
イベントIDを追加してやりました。
https://youtu.be/KT3VuhvQmuo
就活のスケジュール管理で本当に助かっております
ありがとうございました
お役に立てて何よりです。
就活がんばってください。
カレンダー反映の際に日付が1日前にずれるのですが、原因は何になるでしょうか?
たか さん コメントありがとうございます。
一旦、旧エディターに戻し
「プロジェクトのプロパティ」ー「タイムゾーン」が
(GMT+09:00) 東京 になっているか確認してみてください。
→https://technical.verybestcbp.com/calset/
→https://youtu.be/4qPFuM-bbJg?t=412
分かりやすい動画をありがとうございます。
実際に動画の通りにやってみたのですが、下記のエラーが出ます。
TypeError: startTime.getHours is not a function
この場合はどおすればいいのでしょうか?
解決しました。
Nautilus さん
ご連絡ありがとうございます。
おそらく同様のエラーが発生している方が
いらっしゃると思うので、できましたら、
修正箇所をおしえてください。