WoT CWE管理シート自動化の旅々 14.『Discordbotによる戦闘予定通知(仮)』
これの続き
お約束1
第2クールが始まってからのお楽しみ
やりたいこと
第3話にてマッチング情報を取得したのだから、それを画像のような感じでDiscordbotによって通知したい。
botを使った戦闘予定の通知
手順1. Discordbotの準備
戦闘告知に関してはglitchを経由して構築します。 下のリンクを参考にしてbotを構築してください。
glitchが更新されてちょっと手順は異なりますが、大体上の手順に何とかなるはずです。
手順2. GAS側の記述
function PostDatatoGlitch() { var spreadSheet = generalid; var sheetName = "POSTDATA(Discordbot)"; //A列プロヴィンス名・B列開始時間・C列敵クラン名・D列開始陣地・E列マップ名・F列戦線名・G列指揮官名・J列GMリンク・K列タクティクスリンク var cell = spreadSheet.getSheetByName(sheetName).getRange("A2:L100").getValues(); var result = cell.filter(function(value){return (value[1] !== '')}); //空白要素の配列を削除 var count = result.length; //resultの配列数を調べる var today = Utilities.formatDate(new Date(), 'Asia/Kuwait', 'M/dd');//今日の日付を取得※GMの区切りが06:00の為、-6時間の時差があるクウェートの日付を取っています。 //botに送る文章の設定※Discordでの文字装飾もここで設定しています。 var ary = []; for (var i = 0; i < count; i++) { var link1 = "> GM link : <" + result[i][9] + ">"; //GM Link var link2 = "> Tactics link : <" + result[i][10] + ">"; //Tactics Link var data1 = "```Markdown" + String.fromCharCode(10) + "# " + today + " " + result[i][1] +"(UTC+9) battle start ```"; //Battle start time var start = " :point_down: "; //空白半角40文字分 var data2 = "> _**Province name : __" + result[i][0] +"__**_"; //Province name var data3 = "> **Map name : __" + result[i][4] + "__**"; //Map name var data4 = "__*#" + result[i][3] + "*__"; //Start side name var data5 = "*vs **" + result[i][2] + "***"; //Enemy clan name var data6 = "__" + result[i][6] + "指揮__"; //Commander name var data7 = "# " + result[i][5]; //Front name var end = " --------------------"; var test = "> **Province name**" var data8 = "> _**Team : __" + result[i][11] + "__**_team"; //Province name ary.push([data1 + start + String.fromCharCode(10) + data2 + " " + data7 + " " + data8 + String.fromCharCode(10) + link1 + String.fromCharCode(10) + data3 + " " + data4 + " " + data5 + " " + data6 + " " + String.fromCharCode(10) + link2 + String.fromCharCode(10) + end]); } var GLITCH_URL = glitchurl; //result.unshift(today+'の戦闘予定') var json = { 'type':'announce', 'debug':'false', 'content': JSON.stringify(ary) }; sendGlitch(GLITCH_URL, json); Logger.log(cell); }
手順3. スプレッドシート側の記述
POSTDATA(Discordbot)のシートを作成します。 そしてそれぞれのセルに以下のように記述してください。
1.A2セル=QUERY('スクレイピング4(戦)'!$A$2:$N$100,"select A,D,H,I,K,L where H != '404 not found' and N = '○'")
2.G2セル=IFERROR(VLOOKUP(A2,'Battle Plans(version of CWE)'!$H$6:$J$104,3,FALSE))
3.H2セル=IFERROR(VLOOKUP(E2,'Province参照'!$K:$L,2,FALSE))
4.I2セル=IFERROR(VLOOKUP(A2,'戦闘予定(CWE用)'!$H$11:$J$111,3,FALSE))
5.J2セル=IFERROR(VLOOKUP(A2,'戦闘予定(CWE用)'!$H$11:$J$111,3,FALSE))
6.K2セル=IFERROR(VLOOKUP(IF(F2="基本",CONCATENATE(VLOOKUP(A2,'プロヴィンス参照'!$E$107:$F$631,2,FALSE),"(10vs10)"),CONCATENATE(VLOOKUP(A2,'プロヴィンス参照'!$E$107:$F$631,2,FALSE),"(15vs15)")),'タクティクスのリンク'!$C$6:$X$84,HLOOKUP(I2,'タクティクスのリンク'!$C$4:$X$5,2,FALSE),FALSE))
7.L2セル=IFERROR(VLOOKUP(A2,'Battle Plans(version of CWE)'!$H$6:$K$104,4,FALSE))
お約束2
最後に
戦闘告知botに関しては一番面倒くさい部分になりますので正直導入するには多大な苦労を必要とします。 ただ一度導入すればあとは楽になるので導入して損はないと思います。
これでこのシリーズはようやく完結を迎えました。先日スプレッドシート自体を公開しましたので、このシリーズで書かれていることはほとんどがすっ飛ばせると思います。今までお付き合いいただきありがとうございました!!