送信をトリガーにするということは、BotがMessageを送信してから処理をするということでしょうか。
まず、リクエスト用のパッケージを用意します。
js
1const fetch = require("node-fetch");
(事前にnode-fetch
をインストールしてください)
そのあと、おそらくですがこのようなことをしたいのだと思われます。
とりあえずデータが(サンプルデータ)
単語 | 答え |
---|
富士山の高さ | 3776m |
ウンパス君の性別 | わかりません |
みたいに入っているとしたら、
コード.gs
gscript
1function doGet(e) {
2 const p = e.parameter;
3 let sheet = SpreadsheetApp.openByUrl("スプレッドシートのURL");
4 sheet = sheet.getActiveSheet().getRange("A1:A10"/*10は単語の数に置き換える*/).getValues()[0].find(x => x == p.word);
5 let res;
6 if (!sheet) {
7 res = JSON.stringify({
8 code: 404,
9 message: "Not found"
10 })
11 } else {
12 res = JSON.stringify({
13 code: 200,
14 message: sheet
15 })
16 }
17 const response = ContentService.createTextOutput();
18 response.setMimeType(ContentService.MimeType.JSON);
19 response.setContent(res);
20 return response;
21}
としてください(2箇所置き換える箇所があります)
そのあとに、ウェブアプリとしてデプロイしてください
(新しいデプロイ→左の歯車っぽいとこ→ウェブアプリ)
(アクセスできるユーザー→全員)
としてデプロイし、URLを取得した後に
index.js
js
1const prefix = "!";
2
3client.on('message', async message => {
4 if (!message.content.startsWith(prefix)) return;
5 const args = message.content
6 .slice(prefix.length)
7 .trim()
8 .split(/ +/g);
9 const command = args.shift().toLowerCase();
10 if (command === "search") {
11 const searchword = args.join(" ");
12 const response = await fetch("さっき取得したURL?word=" + searchword);
13 const json = await response.json();
14 if (json.code === 404) return message.reply("取得できませんでした");
15 message.channel.send(json.message)
16 }
17});
これでどうでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。