質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

1回答

1085閲覧

GAS x Slackbot x リクルートArtを利用した応答bot作り

sakurase

総合スコア14

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

1クリップ

投稿2019/10/31 09:36

編集2022/01/12 10:55

gas

1//A3RtのapiトークンdoPost 2function getConf() { 3 return { 4 apikey: 'Apiきー' 5 } 6} 7 8 9function doPost(e) { 10 const trial = "げんき"; 11 var slack = e ? e.parameter.token : trial ;//slackからの内容 12 var ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートを取得 13var sheet = ss.getSheetByName("シート1");//シート名でシートを取得 14 15sheet.getRange(1,1).setValue(slack);//シートのA1セルにメッセージのテキストを取得 16 17 var conf = getConf(); 18 var formData = { 19 apikey: conf.apikey, 20 query: slack 21 } 22 23 var options = { 24 'method' : 'post', 25 'payload' : formData 26 } 27 28 var result = UrlFetchApp.fetch("https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk", options) 29 var jsonData = JSON.parse(result.getContentText()); 30 31 return jsonData; 32 33 34} 35 36 37function postSlack(){ 38 39 var message = doPost.jsonData; 40Logger.log(message); //messageの内容が受け取れていない 41 Logger.log(message.results[0]['reply']); 42 43 var message1 = message.results[0]['reply']; 44 const url = "webhookのURL"; 45 var payload ={ 46 "text": message1, 47 "username":"testだよ", 48 "icon_emoji":":icon_イメージ:" 49 } 50 const options = { 51 "method" : "POST", 52 'contentType': 'application/json', 53 "payload" : JSON.stringify(payload) 54 }; 55 UrlFetchApp.fetch(url, options); 56} 57 58 59 60

わからないこと

doPostの内容をpostSlackに渡したい。

現時点

実行関数をpostSlackにすると、gas側からの実行だと実行できるが、
それで、実行しているとslack側のpost内容を受け取れないため、実行関数をdoPostに変更した。変更するとdoPostの引数eがうまくpostSlackにわたせていないため、送信エラーになる。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

API見たところ、JSON形式のデーターに格納してPOSTすればいいようですよ。
リクルートのTalk APIをGASで試してみた

訂正します。というか、なんとなく答えてしまったので、ちょっとソース見直してみます。

GASで外部APIにリクエストするときにはUrlFetchApp.fetchを使います。

追記します。ここまで気づいた点。

GAS

1function postSlack(){ 2 var message = talk();

これ、talk()じゃなくて、talk("")ではないかと。引数が空?

投稿2019/10/31 16:15

編集2019/10/31 17:27
mike2mike4

総合スコア891

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問