かずきち。の日記

サーバサイドエンジニアのつぶやき

GoogleAppsScriptの最新情報だけをクロールしてカレンダー登録するプログラムの作り方

f:id:kazukichi_0914:20220412115823g:plain


みなさんには推しはいますか?

乃木坂だったり自分の推しっているかと思います。
そういった自分の興味があることは常にフォローをしていたいと思うのが世の常です。

「新しいアルバムが出た」
「新しい本が出た」
「新しい商品が出た」
などいろんな情報を知りたいわけです。

ただインターネットは情報量があまりに膨大すぎて人間がフォローできない

f:id:kazukichi_0914:20220412120128g:plain

読売新聞、朝日新聞産経新聞
NHK、日テレ、TBS…
Google、Yahoo…
などと複数のメディアを毎日人力で横断して情報を調べていたら日が暮れます。
というか1人の人生でフォローするのは無理です。

インターネットのトラフィック量は膨れ上がる

f:id:kazukichi_0914:20220412120438g:plain
引用:
https://www.jetro.go.jp/biz/areareports/2018/380fd5f0d9c4bb4d.html#:~:text=%E7%B1%B3IT%E5%A4%A7%E6%89%8B%E3%82%B7%E3%82%B9%E3%82%B3%EF%BC%88Cisco,%E3%81%84%E3%82%8B%EF%BC%88%E5%9B%B31%E5%8F%82%E7%85%A7%EF%BC%89%E3%80%82

2000年代と2020年代のインターネットの状況はもはや違うわけです。
昔は遅いモデムで動画サイトがかくかく止まる時代もありました。
しかし時代は変わってインターネットはさくさく動き、テレビでも「#fujitv」をつけて投稿、みんな気軽にYouTubeなどに動画を挙げられる時代になったわけです。
つまりインターネット環境が改善したおかげでインターネット上にあふれる情報量は格段に上がりまして、バンバン情報を書き込めます。

最後にどうやって作っているかのソースになります。

function getgooglenews() {

  // url設定

  var url = 'https://news.google.com/rss/search?hl=ja&gl=JP&q=GoogleAppsScript&ceid=JP:ja';

  // namespace設定

  var namespace = XmlService.getNamespace("ht",'https://news.google.com/rss/search?hl=ja&gl=JP&q=GoogleAppsScript&ceid=JP:ja');

  // rss取得

  var xml = UrlFetchApp.fetch(url).getContentText();
  var document = XmlService.parse(xml);
  var root = document.getRootElement();
  var channel = root.getChild("channel");
  var items = channel.getChildren("item");
  var link = channel.getChildren("link");

  // sheetに記入

  var sheet = SpreadsheetApp.getActiveSheet();
  var length = items.length;
  var today = new Date();
  var Month = today.getMonth() + 1;

  for(var i = 0; i < length; i++) {

    var title = items[i].getChildText("title");
    var link = items[i].getChildText("link");
    var traffic = items[i].getChildText("approx_traffic",namespace);

    Logger.log(link);
    
    //登録するカレンダーIDを呼び出してeventへ格納
    var calendar = CalendarApp.getCalendarById('自身のカレンダーID@group.calendar.google.com');
    
    //イベントのタイトルをtitleへ格納
    Logger.log(title);
    
    var date = new Date();
    // 今日の日付を表示
    Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd'));
    var today = Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd');
    const option = {
    description: link,
    location: '345 Spear StreetSan Francisco, CA 94105 United States'
  }
    
    Logger.log(today);
    
    //createAllDayEventでカレンダーへイベントを登録
    calendar.createAllDayEvent(title,new Date(today),option);
    
  }
}

カレンダーIDは
feed.mikle.com
引用:
https://feed.mikle.com/ja/support/calender-id/

を見て確認をしてください。
今回のコードを作ったカレンダーは下記になります。


コードを設置したら、トリガーを設置してください。

トリガーのいうのは銃の引き金ですが、プログラミングにおいてはそのプログラムが実行されるきっかけになります。
「雨が降ったら、傘を持ってってとメールをする」みたいにもし〜〜したら、〜〜するを設定することです。
金融でもトリガー条項などありますよね。

f:id:kazukichi_0914:20220412122857g:plain

トリガーはGASのコンソール画面から設定ができ、今回の場合「毎週土曜日」「午後6〜7時に実行」の設定を入れています。
ここを毎秒実行、毎分実行、毎時実行、毎日実行、毎週実行、毎月実行みたいなことをキチガイのように設定ができます。
ここをうまく設定すれば人間はほぼ何もしなくて良い世界が生まれるわけです。
巷にはよく自動化する機会が売られていますが、それって結局メーカーの手のひらで転がされているだけで本質的に人間が自動化しているわけではないです。
究極的なAIは人間が絶滅しても、電力の発電から、何から何まで自動で行なうのが理想的です。
人間のメンテがかからないように作り込むことが非常に重要です。

プライベートでも仕事でも非常に役に立ちます。
先程はコードをお見せしましたが設定から運用まで自信がない方はぜひ購入を検討ください。

ネット記事のバックナンバーを自動記録します 新聞の切り抜きのようにニュースをインターネットから収集・保存