📅  2022-04-18

GASでつくるツール

🔖  Coding🔖  Gadget

ちょっとしたツールを自前で


 このところ、ちょっとGASことGoogle App Scriptで遊んでいました。これ、Googleのスプレッドシートとかカレンダーとかを手軽に連携させることができて、なかなか便利ですね。個人的に、不定期ながらある程度レギュラーで入るスケジュールを、一括でCalendarに記載したいと思っていたので、作ってみました。

 スプレッドシートに、予定の日時と終了日時、そしてスケジュールの見出しをA,B,Cの列にそれぞれ記入しておきます。そのシートのメニューから拡張機能を選び、その中のApp Scriptを開きます。スクリプトの編集画面が表示されたら、左サイドのメニューからサービスのプラスマークをクリックして、Calendarを探してクリック。これで連携できます。

 次に今度はスクリプトの中身です。いろいろ参考になるwebページがあります。たとえばこんなところ。

https://note.com/skipla/n/n0803937a0887 (GASでのスプレッドシートの操作のしかた)

https://webird-programming.tech/archives/922 (GASでのカレンダーの操作のしかた)

 で、それらを参考に、コードはこんな感じになります。

let feeds=[];

function myFunction() {
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  let range = sheet.getRange(1,1,sheet.getLastRow(), sheet.getLastColumn());
  feeds = range.getValues();
  doPost();
}

function doPost(){
  const calendar = CalendarApp.getDefaultCalendar();
  for (i=0;i<feeds.length;i++){
    feedDate = new Date(feeds[i][0]);
    endDate = new Date(feeds[i][1]);
    feedTitle = feeds[i][2].toString();
    calendar.createEvent(feedTitle, feedDate, endDate);
  }
}

 基本的な流れは、myFunctionでアクティブなスプレッドシートを開いて、シートの取得範囲を定め、その値をfeedsに取得します。feedsは行ごとに列が配列で入っています。次にdoPost()を実行します。doPost()は、デフォルトのカレンダーを取得し、forでループしつつ配列のそれぞれを取り出し、それらを用いてイベントを作成する。たったこれだけです。

 スクリプトの画面にある実行ボタンを押すと、カレンダーに予定が書き込まれます。実にお手軽ですね。最初の1回だけ、Googleアカウントのログインを促され、「このアプリは確認されていません」みたいなメッセージが出ます。対処方法はこちらに。

https://pineplanter.moo.jp/non-it-salaryman/2021/05/18/gas-deploy/


 別のプロジェクトですが、簡易RSSリーダーを作るというのもありました。

 Googleニュースの仏語版のRSSリーダーを以前C#でAndroid用に作ったことがあるのですが、最近はiPhoneに移行してしまったので、同じようなツールを作りたい(でも、Xcodeとか面倒)と思っていました。で、スプレッドシートとGASとhtmlでそれができるというわけで、早速やってみました。基本的に次のwebページのものを一部手直ししただけですが、これも便利に使えています。

https://www.odndo.com/posts/1628923388138/ 「トリガーで定期実行するシンプルなRSSリーダーを作成」

 これはトリガーを設定していて、設定時間ごとにRSSを取得してスプレッドシートに書き込むというスクリプトを回しておいて、一方でそのスプレッドシートの内容をhtmlに書き出す、というものですね。デプロイすると、そのhtmlのurlが付与されるので、これをiphoneに転送して、ホーム画面に貼り付けておけば、簡易仏語ニュースリーダーのできあがりです。

タグ

)