Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /***************************************************************************
- 共通関数
- ****************************************************************************/
- /*****************************************************************************************************************************************/
- function setInitProp() {
- /*
- 関数の概要
- :プロパティの
- :デフォルト値を
- :セットする
- */
- var scriptProperties = PropertiesService.getScriptProperties();
- /* プロジェクトのデフォルトのプロパティ構築 */
- scriptProperties.setProperty('sp_bgnPoint',0); //一時領域のkeyを取得する開始点。システム自動設定。
- scriptProperties.setProperty('sp_endPoint',0); //一時領域のkeyを取得する終了点。システム自動設定。
- scriptProperties.setProperty('sp_eachSize',200); //1回のトリガーでフェッチする回数。バッチの良し悪しにより手動で調整するとか。
- scriptProperties.setProperty('sp_datListLength',0); //keyの総数。システム自動設定。
- scriptProperties.setProperty('sp_bbsName','news4vip'); //掲示板名。ニュー速VIP以外に設定したい方はご自由に。
- scriptProperties.setProperty('sp_ymd',""); //バッチが取得する日付(バッチ起動日の前日)。システム自動設定。
- scriptProperties.setProperty('sp_lastcol',0); //表示領域の列番号。システム自動設定。
- scriptProperties.setProperty('sp_lastrow',0); //表示領域の行番号。システム自動設定。
- scriptProperties.setProperty('sp_ss_key','1Yynlwa-JmTU9Pz0RHduFlLnueb3KKjwAs0JYOau2mao'); //スプレッドシートのユニークキー
- }
- /*****************************************************************************************************************************************/
- /*****************************************************************************************************************************************/
- function deleteAllTriggers(){
- /*
- 関数の概要
- :全ての
- :トリガーを
- :削除する
- */
- var triggers = ScriptApp.getProjectTriggers();
- for (var i_deleteAllTriggers = 0; i_deleteAllTriggers < triggers.length; i_deleteAllTriggers++) {
- ScriptApp.deleteTrigger(triggers[i_deleteAllTriggers]);
- }
- }
- /*****************************************************************************************************************************************/
- /*****************************************************************************************************************************************/
- function getToukei(ymd,bbsName){
- /*
- 関数の概要
- :統計くんから
- :スレのURLを生成するのに必要なkeyを抽出して
- :2次元配列として返す
- */
- //URL
- var myURL = "http://open2ch.net/dev/toukei.cgi?m=thread&d=" + ymd + "&bbs=" + bbsName + "&sort=time";
- //オプション
- var opt = {"contentType":"text/html","method":"get","muteHttpExceptions": true};
- //統計くんのhtmlソースを取得する
- var d = UrlFetchApp.fetch(myURL,opt).getContentText();
- //keyを正規表現で取得する
- var regexp_txt1 = bbsName + "/\\d{10}";
- var regexp_1 = new RegExp(regexp_txt1,"g");
- var regexp_txt2 = bbsName + "/";
- var regexp_2 = new RegExp(regexp_txt2,"g");
- var dammy_ = d.match(regexp_1);
- var dammy = dammy_.map(function(elm){return elm.replace(regexp_2,"")});
- //1次元配列を2次元配列に変換する
- var output = dammy.map(
- function (elm){
- return [elm];
- }
- );
- //結果を返す
- return output;
- }
- /*****************************************************************************************************************************************/
- /*****************************************************************************************************************************************/
- function koteFromDat(url){
- /*
- 関数の概要
- :dat形式のスレURLから
- :コテハンを抽出し
- :2次元配列で返す
- */
- //URL
- var myurl = url;
- //オプション
- var opt = {"method":"get","muteHttpExceptions": true};
- //フェッチする
- var d = UrlFetchApp.fetch(myurl,opt);
- //BLOB(Binary Large OBject)で取得する
- var dblob = d.getBlob();
- //文字コードをShift_JISにして文字列型に変換
- var content = dblob.getDataAsString("Shift_JIS");
- var arr = content.split("\n");//改行コードで区切る
- var output = arr
- .map(function(elm){ return elm.split("<>")[0]} )//"<>"で区切って先頭0番目のみ抽出
- .filter(function(elm){ return (/.+◆/).test(elm)} )//正規表現を満たす要素のみ抽出
- .map(function(elm){ return elm.replace(/<.?b>/g,"").replace(">",">","g").replace(/忍法帖【.*】/g,"")} )//不要なタグを削除
- .filter(function (x, ix, self) { return self.indexOf(x) === ix;})//重複する要素を除外(※最終的に重複要素は削除するが、予め減らしておく)
- .map(function(elm){ return [elm] });//1次元配列を2次元配列に変換
- //結果を返す
- return output;
- }
- /*****************************************************************************************************************************************/
- /*****************************************************************************************************************************************/
- function dataSummarize1() {
- /*
- 関数の概要
- :スプレッドシートのresタブにある最右列のデータを取得し、
- :重複削除処理を行った後
- :スプレッドシートのsummaryタブの最右列のデータより一列右に書き込む
- */
- //スプレッドシートを開く
- var ss_key = PropertiesService.getScriptProperties().getProperty('sp_ss_key');
- var ss = SpreadsheetApp.openById(ss_key);
- //resシートのデータを取得する
- var sheet = ss.setActiveSheet( ss.getSheetByName("res") );
- var lastrow = sheet.getLastRow();//lastrow >= 1は保証されている
- var lastcolumn = sheet.getLastColumn();//lastcolumn >= 1は保証されている
- //最右列のデータを取得する
- var row = 1;
- var column = lastcolumn;
- var numRows = lastrow;
- var numColumns = 1;
- var data = sheet.getRange(row, column, numRows, numColumns).getValues();
- //一行目の日付データを取得しておく
- var temp_hdk = data[0][0];
- /*
- *重複削除処理
- */
- var temp_output = [];
- var temp_kote = "";
- var uniq_data = [];
- for( var k = 1; k < numRows;k++ ){
- if( data[k][0] != "" ){
- temp_output.push( data[k][0] );
- }
- }
- uniq_data = temp_output.filter(function (x, ii, self) {
- return self.indexOf(x) === ii;
- });
- //outputにデータを格納する
- var output = [];
- output.push( [ temp_hdk ] );
- for( var j = 0; j < uniq_data.length; j++ ){
- output[j + 1] = [ uniq_data[j] ];
- }
- //summary1シートに書き込み
- var sheet = ss.setActiveSheet( ss.getSheetByName("summary1") );
- var lastrow = sheet.getLastRow();
- var lastcolumn = sheet.getLastColumn();
- var row = 1;
- var column = lastcolumn + 1;
- var numRows = output.length;
- var numColumns = 1;
- sheet.getRange(row, column, numRows,numColumns).setValues(output);
- }
- /*****************************************************************************************************************************************/
- /*****************************************************************************************************************************************/
- function dataSummarize2() {
- /*
- 関数の概要:
- :summary1の最右端の列のコテハンの数を
- :summary2のlastrowの次の行に
- :書き込む
- */
- /******************
- シート操作(summary1)
- *******************/
- //シートを確定する
- var ss_key = PropertiesService.getScriptProperties().getProperty('sp_ss_key');
- var ss = SpreadsheetApp.openById(ss_key);
- var sheet = ss.setActiveSheet(ss.getSheetByName("summary1"));
- //シートのデータを読み込む
- var lastrow = sheet.getLastRow();
- var lastcolumn = sheet.getLastColumn();
- var data = sheet.getDataRange().getValues();
- /******************
- コテハンの数を数える
- *******************/
- var counters = -1;//コテハンカウント用の変数
- var output = [];//出力用の変数
- for(var i = 0; i < lastrow; i++){
- (data[i][lastcolumn-1] == "" ) || ( counters++ );
- }
- output = [ [ data[0][lastcolumn-1], counters ] ];
- /******************
- シート操作(summary2)
- *******************/
- //シートを確定する
- var sheet = ss.setActiveSheet(ss.getSheetByName("summary2"));
- var lastrow = sheet.getLastRow();
- var lastcolumn = sheet.getLastColumn();
- //シートに書き込む
- var row = lastrow+1;
- var column = 1;
- var numRows = 1;
- var numColumns = 2;
- sheet.getRange(row, column, numRows, numColumns).setValues(output);
- }
- /*****************************************************************************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement