• このエントリーをはてなブックマークに追加

  • Google Apps Script入門【その5】のソースコード公開

    2018-08-24 09:02
    どうも、靖宗です。
    その4~5で作ったスクリプトのソースコードを公開しておきます。


    function getLivePage(pageNum) {
      var url = "http://ch.nicovideo.jp/mentalist/live?&page=" + String(pageNum);
      var response = UrlFetchApp.fetch(url);
      return response.getContentText();
    }

    function subPastParser(htmlText) {
      // 一致する文字列が返る
      return htmlText.match(/<section class=\"sub past\">([\s\S]*?)<\/section>/m)[1];
    }

    function liveItemParser(htmlText) {
      // 一致する文字列の"配列"が返る
      return htmlText.match(/<div class=\"item_right\">[\s\S]*?<\/div>/gm);
    }

    function getLiveInfo(htmlText) {
      var returnObject = {
        /*
        lv_name: {
          title     : "オックスフォードからお届け",
          date      : "2018/08/08",
          dayOfWeek : "水",
          time      : "20:00:00"
        },
        */
      };
      var liveInfoArray = liveItemParser(htmlText);
     
      for(var i = 0; i < liveInfoArray.length; i++){
        var liveName = liveInfoArray[i].match(/<a href=\"http:\/\/live.nicovideo.jp\/gate\/([\s\S]*?)\">/)[1];
        var title = liveInfoArray[i].match(/<h2 class=\"title\">[\s\S]*?<a href=\"[\s\S]*?\">([\s\S]*?)<\/a>/m)[1];
        var dateInfo = liveInfoArray[i].match(/<p class=\"date\">([\s\S]*?)<\/p>/m)[1].trim();
        var date = dateInfo.match(/\d{4}\/\d{2}\/\d{2}/)[0];
        var dayOfWeek = dateInfo.match(/\(([\s\S])\)/)[1];
        var time = dateInfo.match(/\d{2}:\d{2}:\d{2}/)[0];
        returnObject[liveName] = {
          title     : title,
          date      : date,
          dayOfWeek : dayOfWeek,
          time      : time
        };
      }
     
      return returnObject;
    }

    function myFunction() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var headerArray = ["live name", "title", "date", "day of week", "time"];
     
      sheet.clear();
      sheet.appendRow(headerArray);

      var pageNum = 1;
      while (true) {
        var text = getLivePage(pageNum);
        var subPastText = subPastParser(text);
        var liveInfo = getLiveInfo(subPastText);
        var nextPage = text.match(/<li class=\"next([\s\S]*?)\">/)[1];  // disabledが入ってたら"disabled"
        
        for(var key in liveInfo){
          var writeArray = [];
          writeArray.push(key); // live name
          writeArray.push(liveInfo[key].title); // title
          writeArray.push(liveInfo[key].date); // date
          writeArray.push(liveInfo[key].dayOfWeek); // day of week
          writeArray.push(liveInfo[key].time); // time
          
          sheet.appendRow(writeArray);
        }
        
        if(nextPage !== ""){
          break;
        }
        else {
          pageNum++;
        }
      }
    }

  • Google Apps Script入門【その4】のソースコード公開

    2018-08-13 09:05
    どうも、靖宗です。
    動画内でお話してましたが、その4の放送の際に行った場所までのソースコードをブロマガにアップしておきます。
    「動画みる時間無いけどちょっと試してみたい!」って方なんかも是非ご利用ください。
    いきなり実行された方は色々警告(スプレッドシートへのアクセスと外部へのアクセス)が表示されると思いますので、ご自身の判断で承諾をお願い致します。


    function getLivePage() {
      var url = "http://ch.nicovideo.jp/mentalist/live";
      var response = UrlFetchApp.fetch(url);
      return response.getContentText();
    }

    function subPastParser(htmlText) {
      // 一致する文字列が返る
      return htmlText.match(/<section class=\"sub past\">([\s\S]*?)<\/section>/m)[1];
    }

    function liveItemParser(htmlText) {
      // 一致する文字列の"配列"が返る
      return htmlText.match(/<div class=\"item_right\">[\s\S]*?<\/div>/gm);
    }

    function getLiveInfo(htmlText) {
      var returnObject = {
        /*
        lv_name: {title: "オックスフォードからお届け", date: "2018/08/08", dayOfWeek: "水", time: "20:00:00"},
        */
      };
      var liveInfoArray = liveItemParser(htmlText);
     
      for(var i = 0; i < liveInfoArray.length; i++){
        var liveName = liveInfoArray[i].match(/<a href=\"http:\/\/live.nicovideo.jp\/gate\/([\s\S]*?)\">/)[1];
        returnObject[liveName] = {title: "オックスフォードからお届け", date: "2018/08/08", dayOfWeek: "水", time: "20:00:00"};
      }
     
      Logger.log(returnObject);
     
      return returnObject;
    }

    function myFunction() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var headerArray = ["live name", "title", "date", "day of week", "time"];
     
      sheet.appendRow(headerArray);
     
      var text = getLivePage();
      var subPastText = subPastParser(text);
      getLiveInfo(subPastText);
    }
  • 電気工事士二種 技能試験 受けてみた

    2018-07-22 14:39
    64d52c1e2c4af56020fa72a03c44e6e3978cfb54

    どうも、靖宗です。
    生放送サボりまくりですみません!月曜あたりには放送したいなぁ

    さて、昨日2018年7月21日に電気工事士二種試験の技能試験を受けてきました。
    この電気工事士というのは、家庭などの電気設備の工事をする際に必要な資格です。これ無しで勝手にコンセントとか増設しちゃうと怒られます。(電気工事士法というものがあるそうで・・・)

    このチャンネルではまずプログラムなどライトな所から紹介したいとは思いますが、ゆくゆくは「理想のスマートホームがない?なら作っちまおうぜ!」という発想が生まれるぐらいには色々紹介したいのです。ですので、割とこの資格は必要不可欠・・・

    で、受けた感想ですが多分技能試験はダメだった気がします!
    (時間不足で直せなかった欠陥が2箇所ほど・・・)
    普通に練習不足ですね。興味がある人はきっちり練習していきましょう。
    ただし、おそらく世間に出回っている練習キット全部やるほど練習しなくていい気がします。
    今回も正直「ぎりぎり間に合わなかった」という感じだったのでランプレセプタクルと
    VVFケーブル同士の結線(差し込み型コネクタ、リングスリーブ)あたりを
    1~2回練習しておけばあとは動画学習でいい気がします。

    正直実技対策の本も要らなかったです。
    というかHOZANさんの「電工試験の虎」というサイトが優秀過ぎます。
    ミニマムの費用で挑戦するならこのサイト+工具+ホームセンターで上記に書いた
    練習(ランプレセプタクル+VVFケーブル+差し込み型コネクタ、リングスリーブ)
    でも良さそうですね。

    そのうち筆記のこととかも書くかもしれません。