Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function mainProc() {
- /***************************************************************************
- 主処理
- ****************************************************************************/
- /*
- 関数の概要
- :keyを元にスレを取得
- :コテハンを抽出し
- :表示領域に描画する
- */
- /*
- 処理実行の契機
- :初期処理or主処理or主処理レスキュー処理に自動でスケジュールされ実行
- */
- /*******************************************************
- プロパティを呼び出す
- ********************************************************/
- //文字列
- var cr_bbsName = PropertiesService.getScriptProperties().getProperty('sp_bbsName');
- var cr_ymd = PropertiesService.getScriptProperties().getProperty('sp_ymd');
- //数値
- var cr_eachSize = PropertiesService.getScriptProperties().getProperty('sp_eachSize') - 0;
- var cr_bgnPoint = PropertiesService.getScriptProperties().getProperty('sp_bgnPoint') - 0;
- var cr_endPoint = PropertiesService.getScriptProperties().getProperty('sp_endPoint') - 0;
- var cr_datListLength = PropertiesService.getScriptProperties().getProperty('sp_datListLength') - 0;
- /*******************************************************
- cr_bgnPointの更新
- cr_endPointの更新
- ********************************************************/
- //更新
- cr_bgnPoint = cr_endPoint + 1;
- cr_endPoint = cr_endPoint + cr_eachSize;
- //cr_datListLengthを超えていないか確認
- if( cr_bgnPoint >= cr_datListLength ){ cr_bgnPoint = cr_datListLength };
- if( cr_endPoint >= cr_datListLength ){ cr_endPoint = cr_datListLength };
- //プロパティの更新
- PropertiesService.getScriptProperties().setProperty('sp_bgnPoint',cr_bgnPoint);
- PropertiesService.getScriptProperties().setProperty('sp_endPoint',cr_endPoint);
- //トリガーレコーダーに記録
- var thisPROCNAME = "mainProc";
- var thisSTAT = "STARTED";
- triggerRecorder(thisPROCNAME,thisSTAT);
- /*******************************************************
- 一時領域からキーを取得する
- ********************************************************/
- //キー格納用の配列
- var cr_keyArray = [];
- var ss_key = PropertiesService.getScriptProperties().getProperty('sp_ss_key');
- var ss = SpreadsheetApp.openById(ss_key);
- var sheet = ss.setActiveSheet(ss.getSheetByName("key"));
- cr_keyArray = sheet.getRange(cr_bgnPoint,1,cr_endPoint - cr_bgnPoint + 1,1).getValues();
- for(var i = 0;i < cr_keyArray.length; i++){
- cr_keyArray[i] = cr_keyArray[i][0];
- }
- /*******************************************************
- 該当スレッドに存在するコテハンを抽出する
- ********************************************************/
- var cr_koteArray = [];//コテハンを格納する配列
- var cr_key= "";//生成したURL
- var cr_res = [];//コテハンを格納する一時的な配列
- for(var j = 0; j < cr_keyArray.length; j++){
- //datで取得
- cr_key = "http://open2ch.net/" + cr_bbsName + "/dat/" + cr_keyArray[j] + ".dat";
- cr_res = koteFromDat(cr_key);//戻り値は2次元配列
- if( cr_res.length != 0){
- cr_koteArray = cr_koteArray.concat( cr_res );
- }
- }
- /*******************************************************
- 表示領域に書き込む
- ********************************************************/
- var sheet = ss.setActiveSheet(ss.getSheetByName("res"));
- var lastcol = 0;//列
- var lastrow = 0;//行
- //初回起動か否かで処理の振り分け
- if( cr_bgnPoint == 1 ){
- //★初回起動である時
- //最終書きこみ列の取得
- lastcol = sheet.getLastColumn();
- //書き込み対象の列をプロパティへ格納
- PropertiesService.getScriptProperties().setProperty('sp_lastcol',lastcol);
- //ヘッダー作成
- sheet.getRange(1, lastcol+1).setValue(cr_ymd);
- //列の幅を設定
- sheet.setColumnWidth(lastcol+1, 300);
- }else{
- //★初回起動でない時
- //最終書き込み列をプロパティから呼び出し
- lastcol = PropertiesService.getScriptProperties().getProperty('sp_lastcol') - 0;
- //最終書き込み行をプロパティから呼び出し
- lastrow = PropertiesService.getScriptProperties().getProperty('sp_lastrow') - 0;
- }
- //コテハンを表示領域に書き込む
- if(cr_koteArray.length != 0 ){
- sheet.getRange(lastrow + 2,lastcol + 1,cr_koteArray.length,1).setValues(cr_koteArray);
- }
- /*******************************************************
- プロパティを更新する
- ********************************************************/
- //最終書き込み行の更新
- lastrow = lastrow + cr_koteArray.length;
- //プロパティの更新
- PropertiesService.getScriptProperties().setProperty('sp_bgnPoint',cr_bgnPoint);
- PropertiesService.getScriptProperties().setProperty('sp_endPoint',cr_endPoint);
- PropertiesService.getScriptProperties().setProperty('sp_lastrow',lastrow);
- /*******************************************************
- 終了判定
- ********************************************************/
- if( cr_endPoint == cr_datListLength){
- Logger.log("終了処理へ");
- //終了処理を実行するトリガーをセットする
- ScriptApp.newTrigger("termProc")
- .timeBased()
- .after(1 * 60 * 1000)// 1分後に実行
- .create();
- //トリガーレコーダーに記録
- var thisSTAT = "ENDED";
- triggerRecorder(thisPROCNAME,thisSTAT);
- }else{
- Logger.log("主処理継続");
- //トリガーの削除
- deleteAllTriggers();
- //主処理を実行するトリガーをセットする
- ScriptApp.newTrigger("mainProc")
- .timeBased()
- .after(1 * 60 * 1000)// 1分後に実行
- .create();
- //主処理レスキュー処理を実行するトリガーをセットする
- ScriptApp.newTrigger("rescueProc")
- .timeBased()
- .after(22 * 60 * 1000)//22分後に実行
- .create();
- //トリガーレコーダーに記録
- var thisSTAT = "ENDED";
- triggerRecorder(thisPROCNAME,thisSTAT);
- }
- }//END_OF_mainProc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement