- リンクを取得
- ×
- メール
- 他のアプリ
- リンクを取得
- ×
- メール
- 他のアプリ
前回までで、GASをTwitter APIと接続し投稿するスクリプトを作り、トリガ機能を使って自動でスクリプトを起動するようにしました。
今回は、投稿内容を自動で判断して投稿するように設定をしていきます。基礎の基礎として、日付を読み込んで投稿するスクリプトを作成します。
せっかくのロボットのブログなので、ロボットに関する記念日を投稿するボットにします。
1.スプレッドシートの準備
GASの良い所として、データベースなどのセッティングをしなくてもスプレッドシートから出力できる範囲であればデータのリストを利用したスクリプトを作ることができます。
今回はA列からD列まで年、月、日、投稿内容、の順に記載します。とりあえず、例えばですが、2015年6月20日にpepperが発売された情報を登録しました。
2.スクリプトの作成
下記のスクリプトを記載します。
//読み込むシートの設定
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RoboCalendar');
var lastRow = sheet.getLastRow();
// セルの範囲を取得してセル範囲の値を2次元配列で取得する。
var range = sheet.getRange(1,1,lastRow,5);
var values = range.getValues()
//日付の取得
var date = new Date();
for(i=0; i < values.length; i++){
if(date.getDate() === Number(values[i][2])){
if(date.getMonth() + 1 === Number(values[i][1])){
postMessage = ("今日" + (date.getMonth()+1) + "月" + date.getDate() + "日は、" + values[i][0] + "年に" + values[i][3] + "です。" + values[i][4])
postTweetMessage(postMessage)
//Tweet間の時間待機
Utilities.sleep(1000);
}else{console.log("月が不一致")}
}else{console.log("日付が不一致")}
}
順番に説明していきます。
1~3行目では、読み込む対象のSpreadSheetを指定して、Sheetのインスタンスを作成するとともに、最終行を取得しています。これにより、後で行が増えたときに、スクリプトをいじることなく内容を充実させることができます。
5~7行目では、1行1列目を起点として、最終行まで、valuesに5列分のデータを配列に格納します。
9,10行目では今日の日付情報を取得しています。
12行目は反復処理の実施です。i=0からvaluesのサイズ-1まで各行に対して反復処理を行います。0をスタートとしているのは、javascriptの配列情報のインデックスが1からではなく、0からスタートしているからです。初心者がよくハマるやつです。これをしておかないと、最後まで行ったときに、"そんなとこに配列無いよ"って怒られてしまいます。
13,14行目では、2列目と3列目に格納されていた日付情報と、当日の日付情報を比較しています。Monthの情報は0から始まっているのでこれも注意です。
15行目でメッセージを作成しています。javascriptでは、文字列の結合をする際に"+"でつなぎます。変数も文字列も同じ並びで結合できるので簡単です。 但し、文字列は""で括らないとエラーが起きるので気を付けてください。今回のように変数と文字列を繰り返し結合すると、ミスしがちなので注意です。
18,19行目で1秒sleepさせています。これは、同じ日に複数の記念日があった時にあまりにも連投にならないようにするための処理で、数件くらいであれば不要です。
20,21行目では、投稿されなかった場合の理由を記載しています。デバッグ用なのでこれも無くて問題無いです。
3.動かしてみよう
今回、スクリプト名の分は上に記載してないので、好きな名前を付けてGAS上で起動しましょう。今日が6/20でなければ、日か月かが不一致です。と言われて終了です。起動するか確認する際には、spreadsheetの方に今日の日付の適当な項目を入れて、16行目の前に//を入れて、console.log(postMessage)と入れて起動してください。
今日、〇月〇日は××の日です、のようなログがコンソールに表示されたら成功です。
ご自分で好きな記念日一覧をspreadsheetに記載して運用してみてください。最後にトリガーの設定もお忘れずに。
次回の記事で、これらを更にアップデートしていきたいと思います。
コメント
コメントを投稿