NHK Program Search

文字型データ項目で指定されたキーワードにマッチする番組情報を文字型データ項目に格納し、通信ログを文字型データ項目に格納します

    A. Set NHK API KEY単一行記述必須
    B. Select AREA CODEデータ項目選択文字列型(単一行)必須
    C. Select SERVICE IDデータ項目選択文字列型(単一行)必須
    D. Select DATEデータ項目選択日付型必須
    E. Select SEARCH WORDS CSVデータ項目選択文字列型(単一行)必須
    F. Select Access Logデータ項目選択文字列型(複数行)必須
    G. Select Match Logデータ項目選択文字列型(複数行)必須
    -設定変数名設定ラベル
    Aconf_DataIdASet NHK API KEY
    Bconf_DataIdBSelect AREA CODE
    Cconf_DataIdCSelect SERVICE ID
    Dconf_DataIdDSelect DATE
    Econf_DataIdESelect SEARCH WORDS CSV
    Fconf_DataIdFSelect Access Log
    Gconf_DataIdGSelect Match Log
    // TV Program search via NHK Program List API (ver. 20170411)
    // (c) 2017, Questetra, Inc. (the MIT License)
    // 情報提供: NHK
    
    //// == コンフィグ&参照 / Config & Retrieving ==
    // あなたの "NHK番組表API" の "登録済みアプリ"
    // http://api-portal.nhk.or.jp/
    var nhkKey = configs.get( "conf_DataIdA" );
    
    // http://api-portal.nhk.or.jp
    var nhkArea = data.get( configs.get( "conf_DataIdB" ) ) + "";
    var nhkService = data.get( configs.get( "conf_DataIdC" ) ) + "";
     // 総合"g1",Eテレ"e1",BS1"s1",BSプレ"s3"
    var nhkDate = data.get( configs.get( "conf_DataIdD" ) ) + "";
    var searchWordsCsv = data.get( configs.get( "conf_DataIdE" ) ) + "";
    
    var dataIdF = configs.get( "conf_DataIdF" );
    var dataIdG = configs.get( "conf_DataIdG" );
    
    //// == 演算 / Calculating ==
    var accessLog = "";
    var matchLog = "";
    
    /// -- GET program list --
    var uri = "http://api.nhk.or.jp/v2/pg/list/";
    uri += nhkArea + "/";
    uri += nhkService + "/";
    uri += nhkDate + ".json?key=";
    uri += nhkKey;
    
    // com.questetra.bpms.core.event.scripttask.HttpClientWrapper
    // http://www.questetra.com/ja/tour/m2/m230/
    // HttpRequestWrapper
    var requestMsg = httpClient.begin();
    
    // HttpResponseWrapper
    var responseMsg = requestMsg.get( uri );
    accessLog += "---GET--- " + responseMsg.getStatusCode() + " " + responseMsg.getCharset() + "\n";
    accessLog += responseMsg.getResponseAsString() + "\n\n";
    
    /// -- Word Search --
    var responseObj = JSON.parse( responseMsg.getResponseAsString() );
    var searchWords = searchWordsCsv.split(",");
    
    var tmp = "";
    for (var i = 0; i < responseObj.list[nhkService].length; i ++) { // Bracket notation
      tmp = responseObj.list[nhkService][i].start_time.slice(11, 16) + "\n";
      tmp += responseObj.list[nhkService][i].title + "\n";
      tmp += responseObj.list[nhkService][i].subtitle + "\n";
      tmp += responseObj.list[nhkService][i].content + " ";
      tmp += responseObj.list[nhkService][i].act + "\n";
    
      for (var j = 0; j < searchWords.length; j ++) {
        if ( tmp.match( searchWords[j] ) ) {
          matchLog += tmp + "\n+++ \n\n";
          break;
        }
      }
    }
    
    
    //// == ワークフローデータへの代入 / Data Updating ==
    retVal.put( dataIdF, accessLog );
    retVal.put( dataIdG, matchLog );
    
    

    • B’: Bで選択したデータ項目に格納されている エリアコード
    • C’: Cで選択したデータ項目に格納されている サービスID(放送チャンネル)
    • D’: Dで選択したデータ項目に格納されている 放送日
    • E’: Eで選択したデータ項目に格納されている 検索ワードCSV *
    • 通信ログがFで選択したデータ項目に格納されます
    • キーワードにマッチした番組情報がGに格納されます
    • * 複数のキーワードを指定する場合は、カンマで区切ってください