紺碧の空3

北海道をノマド的に生きる日々の覚書き

WEB全般 技術覚書

googleスプレッドシートの内容をgoogleカレンダーに読み込む

投稿日:2018年6月24日 更新日:

前から懸案だった、googleスプレッドシートに入力済みの表形式データをgoogleカレンダーに自動で読み込ませるスクリプトを作った。

この表は観測記録なので、日付データとそれに紐づく観測場所や内容がある。直接カレンダーに入力してもいいのだけど、スプレッドシート側では観測者や写真の在処などを細かい別項目で整理したいし、全部を公開しても見づらいだけなので、必要な情報だけ連携させたいと思っていたのだ。

これらはgoogle Apps Scriptという「サーバーサイドスクリプト環境」で提供されている。

Google Apps Scriptってなに?

つまりgoogle driveの中に入ってるスプレッドシートなどgoogle Apps(サーバ内で動くWEBアプリケーション)を動かすためのスクリプトで、MS officeでいうVBAみたいなことができる。javascript互換なんだって。

昔いじったことのあるgoogleAPIなどと同じgoogleデベロッパーズの中にリファレンスが。

カレンダー関連トップ https://developers.google.com/apps-script/advanced/calendar

日本語にしてくれている人http://googlestyle.client.jp/calendar_services/class_calendar.html

参考にしたコードはリファレンスにも載ってるこんなかんじ。
GoogleスプレッドシートからGoogleカレンダーにインポート

ただ、これだとgetDefaultCalendar()でデフォルトのカレンダーにしか連携されず、

どうしたらいいかちょっと悩んで、getCalendarById(‘カレンダーID’)にした。

あと、本当は日付が空白だったら読み飛ばしさせたかったんだけど、javascriptの日付判定でハマって
(javascript自体は日付チェック関数とか持ってないんだった・・・いつもその辺でイラッとしてしまうが、javascriptに慣れてないせいで期待しすぎてる自分が悪いんだろう)

一旦諦めてスプレッドシート側で正しい日付形式を渡すよう編集した。

後になって思いついたのだが、よく考えたらGAS自体がjavascriptのラッパー環境だとすれば独自関数もあるよね?と思って探したら、Utilitiesクラスでできそう。・・・どうも勘が鈍っている。

参考:Google Apps Scriptでプログラミングを学ぶ 第5回

function createEventFromSheet() {
    var sheet, i, myevent, mystart, myend, mylocation, mydescription, mystartrow, myendrow;
    var sheet = SpreadsheetApp.getActiveSheet();

//カレンダーIDは◯◯@group.calendar.google.comのような形式
    var cals = CalendarApp.getCalendarById('カレンダーID');

//シートの固定セルに読み込み開始・終了行を入力
    mystartrow = sheet.getRange(5, 14).getValue();
    myendrow = sheet.getRange(5, 15).getValue();  

//列番号はワークシートに合わせて固定値で変更
    for(var i = mystartrow; i <= myendrow; i++) {
        myevent = sheet.getRange(i, 8).getValue();
        mystart = new Date(sheet.getRange(i, 14).getValue());
        myend = new Date(sheet.getRange(i, 15).getValue());
        mylocation = sheet.getRange(i, 6).getValue();
        mydescription = sheet.getRange(i, 16).getValue();
        var event = cals.createEvent(myevent, mystart, myend,{location:mylocation, description:mydescription});
		}
}

おそらくこれくらいなら、ツイッターのログとgoogleカレンダーの連携で使っているZapierでも実現できるんだけど、こっちですぐ出来そうなのでやってみました。

結果、wixのgoogleカレンダーウィジェット(アプリ)で表示させてるのがこれ。

蜃気楼・幻氷の観測記録

今のところ今年の5月くらいまでデータ入ってます。(4月あたりを見るとわかりやすい)

→修正

今はこちらで公開しています

 

追記:アイキャッチ画像に、developerのアイコンを使ってみたんだけど、どうも googleさんは各種アイコンの利用に厳しいようなので(各サービスごとに方針が出ており、出てないものは使わないほうがよさそう)、許可が出てるgoogle driveのアイコンに変えました。ドライブのバッジとブランドの使用

初版公開日時: 2014年8月17日

こちらの記事もおすすめ

 

 

-WEB全般, 技術覚書

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

「最新の投稿」ブロックエディタで、カテゴリーが入力(更新・抽出)できない【WordPress 5.5】

みんな困ってないのかなぁ~~~。 あ、無事、在宅アルバイトワーカー生活、続けております。 WordPress5台になって登場し、当初不評だったブロックエディタもだんだんこなれてきて、今や欠かせない存在 …

twitter タイムラインを埋め込み、背景色を変更

twitterの公式埋め込みコードがシンプルで使いやすくなってからはあまり考えずにブログ等に埋め込んでいた。 背景色を、ほかのウィジェットと揃えたかったんだけど、普通にクラスにbackgroundやb …

WEB会議に使うWEBカメラ代用としてスマホ・コンデジ・一眼系は使えないのか→一部成功【LUMIX/EOS/olympus TG/ZOOM/Webex OBS studio】

久々にこちらのブログに書きます。 単刀直入に、タイトルの通りです。かなり苦戦しましたが思い描いているところまでできたので備忘メモです。 why? デスクトップPCに接続するマイクはあるけどカメラが無い …

覚書き

google my map埋め込み時に拡大率、中心を変更する、ルートの色を変える

今日はPCセットアップとは違う備忘メモ。 google map がらみって、仕様変更めちゃくちゃ激しいですよね。 googleさんが、一番重要視しているっていう意図が何となく伝わってきます。 (世界を …

スマホ Bluetoothキーボード WordPress 記事執筆

スマホ+Bluetoothキーボードで反応が鈍い、調子が悪くなった時の対処法とMarkdown記法でWordPress執筆お試し中(その4)

備忘メモばっかり増えてもしょうがないので、別テーマ2つを1記事にします。 3歩、歩くと忘れるので、書いておかないと💦 Contents スマホにBTキーボードを繋げたら反応が鈍くなった時 スマホ+BT …











スポンサーリンク