Webデスクトップの制作 #31 Googleカレンダー(国民の休日)のデータ取得

2024/11/07

アプリケーション

t f B! P L
eyecatch GAS (Google Apps Script)通称、ガス 以前もGoogleSpreadSheetの連携で使ったガスですが、これ本当に便利で利便性が高い機能なんですよ。 Web制作でもかなりかゆいところに手が届くヤツなので、扱い慣れておいたほうがいいですね。 Googleの結構いろいろなWebアプリのデータをJavascriptだけで取得したり、活用できるので、今回はカレンダー機能を作ってみたいと思いました。 ただ、完璧なカレンダー機能となると、少し大掛かりな開発になりそうだったので、 今回は、国民の休日カレンダーを引っ張ってくる機能をWebデスクトップに搭載してみようと思います。

デモ

うまく表示されていない場合は、「メニュー」-「データ初期化」をしてください。 ※デモは最新版が表示されています。該当のデモを見たい場合は、ソースをCloneしてコミットを戻してブラウザで表示して確認してください。

ソースコード

https://github.com/yugeta/web_desktop/ 今回の最終Commitは"Merge pull request #44"です。

解説

今回はほとんど、GAS(ガス)の説明になってしまいます。 手順としては、SpreadSheetの時とほぼ同じですが、今回は開発で気がついた注意点なども記述しておきます。

GASの準備

1. Google Apps Scriptのソース管理画面 今現在どこにもリンクが設置されていなかったので、URL貼り付けておきますので、直接行ってみましょう。 https://script.google.com/home これまでスプレッドシートなどでAppsScript書いた事ある人は、ここにソース(プロジェクト)一覧が表示されていると思いますが、スプレッドシートとの違いは、アプリからのスクリプト起動をせずに、直接GASプロジェクトを立ち上げるという点です。 2. 新しいプロジェクトを作成 画面左上の「新しいプロジェクト」ボタンをクリックして、新規にプロジェクトを作成してみましょう。 こんな画面が立ち上がりますよ。 3. ソースを作成(コピペして) function doGet(){ const data = holidays() const response = ContentService.createTextOutput() response.setMimeType(MimeType.JSON) const json = JSON.stringify(data) response.setContent(json) console.log(json) return response } // 休日の取得 function holidays(){ const calendarId = 'ja.japanese#holiday@group.v.calendar.google.com' const holidayCalendar = CalendarApp.getCalendarById(calendarId); const dt = new Date() const start = new Date(dt.getFullYear(), 0, 1); const end = new Date(dt.getFullYear()+1, 0, 1); const holidayEvents = holidayCalendar.getEvents(start, end); const holidayNames = holidayEvents.map(holidayEvent => { const ymd = Utilities.formatDate(holidayEvent.getStartTime(), "JST", "yyyy-MM-dd") const title = holidayEvent.getTitle() return { date : ymd, title : title, }; }) return holidayNames } 4. 新しいデプロイを作成 5. ウェブアプリを選択 6. 適当な名前を付けて「全員」を選択 上記で「デプロイ」ボタンを押します。 7. アクセス認証許可 ボタンをポチる。 おなじみのこの画面、許可しまくってください。(あと2ページほどあるのは割愛) 8. URLをコピっておく コピったURLをブラウザのアドレスに入れて、ちゃんと国民の休日一覧が、JSONで表示されるか確認する。 これで、GAS下準備は完了です。 ガス完了!!!

Webデスクトップのアプリ設定

続いて、アプリ側は、setting.jsonのアイコンを追加しておきます。 ※このカレンダー機能は、最終的には、システムに以降するので、setting.jsonからは消す予定です。今回は、アクセステストの為の設定です。 { "id" : "calendar", "name" : "カレンダー", "type" : "app" } そして、app/calendar/ この中にアプリソース一式が入っています。 ※ソースはGithubを参照してください。(スミマセン) 先ほどコピった、デプロイURLは、 app/calendar/setting.json の中のurlというkeyに貼り付けています。 表示して、コンソール確認

あとがき

今回は表示は作っていません。 コンソールに国民の休日が1年分取得できていれば、設定完了です。 次回以降に、カレンダーとしての機能を仕上げていきたいと思います。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ