悪あがきプログラマー

悪あがきを続けていきたい技術と書評なブログです。トレタでiOSエンジニアやってます。

Google Apps Scriptでホリエモンメルマガに載っている「今週のメディアスケジュール」を自分のカレンダーに自動登録してみた!

ホリエモンこと堀江貴文のメルマガを購読しています。
(収監中は獄中飯に興味が無く一度止めてしまいました。すみません。)
堀江貴文のブログでは言えない話

毎週月曜日更新で堀江さんが経済やビジネスの話を繰り広げていてほんと週刊少年ジャンプ読むの止めてよかったなと思ってます。はい。

このメルマガには「12.今週のメディアスケジュール」として堀江さんのスケジュールが載ってたりします。で、いつぞやのQAコーナーでこのスケジュールをGoogle Calendar等で共有してほしい的なことが書かれていたんですが、「スタッフもそんな時間ない」的な回答で一蹴されてました。

エンジニアな僕としてはそんなんフォーマットだけ決めてもらって自動でGoogle Calendarに登録するスクリプト書けばええやん、、、誰かが。僕はやらんで。僕はやらんで。大事なことやから二回言ったで。と思っていたわけです。

しばらく半分忘れてたんですが、@さんの勉強会でGoogle Apps Script(以下GAS)はかなり便利だよ!というのを聞いて、ちょっと調べてみたらGmailにもCalendarにもアクセス出来ると。ということで書いてみました。リファクタリングまではあまり手が回らず、でも一応コメントはそれなりに書いてみました。

ソースの下に使い方も載せてるので良かったら使ってみてください。

スケジュール

メルマガに載ってるスケジュールはこんな形式をしています。
勝手に載せたら怒られるかも、、とビビって過去分ですw

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
12.今週のメディアスケジュール
 連載や書籍の上梓、ネット生放送やテレビ出演、講演など、メディア関連の
情報をまとめてお知らせします。ぜひご覧ください!

◆◇ 6/10(mon)◆◇
~雑誌~
『週刊プレイボーイ』連載
【ホリエモン×ひろゆきの なんかヘンだよね…】

◆◇ 6/11(tue)◆◇
~雑誌~
『週刊朝日』連載
【週刊!ホリエモンのシャバ日記】
http://publications.asahi.com/ecs/24.shtml

『週刊アスキー』連載
【ホリエモンのコレいいかも!?】
http://weekly.ascii.jp/

◆◇ 6/14(fri)◆◇
~雑誌~
『BODIVO』
http://www.shufu.co.jp/magazine/bodivo/

◆◇ 6/15(sat)◆◇
~雑誌~
『DIME』
http://dime.jp/magazine/

------------------------------

これを空行で区切ったものをひとつの予定としてカレンダーに登録していきます。

ソース

使い方

Google Driveで適当なドキュメントを新規作成します。
f:id:y_koh:20130621081822p:plain

Tools→Script editor...
f:id:y_koh:20130621081823p:plain

Blank Projectを選択します。
f:id:y_koh:20130621081824p:plain

すると空のプロジェクトができます。
f:id:y_koh:20130621081825p:plain

ここにgist(リンク先)のソースを貼り付けます。Gmailに届いたメルマガ「堀江貴文のブログでは言えない話」からスケジュールを抽出し、自分のGoogle Calendarに登録するGoogle Apps Script(ソースはこのエントリの一番下にも載せてます)
f:id:y_koh:20130621081826p:plain

貼り付けて保存しようとするとダイアログが出てくるのでプロジェクト名を入れてOK
f:id:y_koh:20130621081827p:plain

Select functionから「registHoriemonCalendar」を選択します。(関数名適当だなぁ。。)
f:id:y_koh:20130621081828p:plain

実行!!
f:id:y_koh:20130621081829p:plain

あらら、Authorization requiredというアラートが出てきてしまいました。これはGmailとCalendarにアクセスしていいかどうかを聞いてます。「Authorize」を選択します。
f:id:y_koh:20130621081830p:plain

承認します。
f:id:y_koh:20130621081831p:plain

閉じます。
f:id:y_koh:20130621081832p:plain

気を取り直してもう一度、実行!!
f:id:y_koh:20130621081833p:plain

このメッセージが出ている間が実行中になります。メッセージが消えたら実行完了。
f:id:y_koh:20130621081834p:plain

実行結果

さて、Googleカレンダーに実行結果を見に行ってみましょう。
f:id:y_koh:20130621081835p:plain

おお!反映されてますね。
ちなみにアジェンダではこんな感じです。
スケジュールのタイトルをどうしようか迷ったのですが、わかればいいやってことで内容を全部つなげてぶち込んでますw
f:id:y_koh:20130621081836p:plain

定期実行したい

そんなあたなのためになんと!GASには定期実行するためのtriggerというものがあります。
f:id:y_koh:20130621082409p:plain

triggerを新しく追加します。
f:id:y_koh:20130621082414p:plain

こんな感じで設定してみましょう。これは、毎週月曜日9時〜10時の間に実行ですね。(triggerだけはまだ検証できてません。。)
f:id:y_koh:20130621082420p:plain

終わりに

ということで、このスクリプトを使えばホリエモンスケジュールがあなたのカレンダーに!欲しい人は使ってみてください。

って思ったのですけど、このGoogle Calendar自体を共有すればそれで事が済むのでは。。もちろん許可は必要ですけど。。ちょっと聞いてみようかな。

GASについての所感

GASかわいいよ。GAS。って感じですね。GmailとCalendarへのアクセスが簡単過ぎました。ログインアカウントが同じだから何でしょうけど、認証系のコードが一切必要ないのはいいですね。

この一行で「ホリエモン」カレンダーが取得出来ますからね。かなり楽ちんです。

var calendars = CalendarApp.getCalendarsByName('ホリエモン');

他にも色々と出来そうなのでちょくちょく触っていきたいと思います。

ちなみにGASについては主にこのサイトを参考にしました。
初心者のためのGoogle Apps Scriptプログラミング入門
初心者向けの内容がよくまとまっていて助かりました。