GAS サイトの更新をメールでお知らせシステムを作りました

2018年6月26日

自分が今好きな漫画の一つのワンパンマンの更新を通知するシステムを作りました。(下にコードあり)

使ったのはGoogle Apps Script、略してGASです。GASはJavascriptで簡単なWebアプリや便利システムを、無料で作れるサービスです。ちなみにGASはこちらの動画で知りました。この投稿者さんは面白いです。ドットアンインストールのタグとかセンスありすぎです笑。

今回のシステムはメールで更新があった時お知らせします。

こんな感じです。

GASプロジェクトを作るときは、まずはスプレッドシートを開いてからツール>>スクリプトエディタの順に開くようにします。じゃないと面倒です。

更新の検知はサイトの一部の文章を切り取って、前回の取得したものとの比較でやってます。50000字を超えると一つのセルに保存できないのと、サイトの動的な要素を省く為に、切り取っています。

とりあえず、メールで自分に通知まで完成?(まだ実際にワンパンマンが更新されたことがないので、正確には分からない。自分のサイトでは完成を確認済み)しました!

Twitter Bot化も成功したので。メモとして次回の記事で残すかも。(@UpdatePunch

追記:記事追加しました!


var targetName="ワンパンマン";
var targetUrl="http://tonarinoyj.jp/episode/13932016480028985383";
var mailAddress="sample@gmail.com";     

//メイン関数
function detectChange(){ 

  //スプレッドシートの取得&アクティブ化
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadSheet.getActiveSheet();                

  //使用セル指定
  var cellA1 = sheet.getRange("A1");
  var cellA2 = sheet.getRange("A2");

  //過去の情報取得
  var before = cellA1.getValue();
  var volumes = cellA2.getValue();

  //urlの先の情報
  var response = UrlFetchApp.fetch(targetUrl);             //httpレスポンス
  var now = response.getContentText("UTF-8");  //現在のテキスト
  now = now.substring(now.indexOf("xxx"),now.indexOf("xxx"));

  //更新処理
  if(before !== now){
    //セルの値を更新
    cellA1.setValue(now);   

    volumes++;
    cellA2.setValue(volumes);

    mailMe(volumes);
  }

  /*
  else{
    mailMeElse(now);
  }
  */
}

//更新通知メール
function mailMe(volumes){
  MailApp.sendEmail(
    mailAddress,                     //宛先
    targetName+"第"+ volumes +"話の更新通知",     //タイトル
    targetName + "(" + targetUrl + ")が更新されたよ!"
  );
}

//更新無し通知メール
function mailMeElse(){
  MailApp.sendEmail(
    mailAddress,
    "更新無し",
    "更新無しだよ!"
  );
}

/*
function myFunction() {
  var sheets = SpreadsheetApp.openById('1hjzaqqy_MTooazKRoMu5nBUAlAmEhCRedhchwuiJ3-I');
  var sheet = sheets.getSheetByName('sheet1');

  sheet.appendRow(['hello','1234']);
}*/

ITGAS, Javascript

Posted by shu