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

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

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

484閲覧

チャットボットをGASで作成したいが、エラー表示が消えない

jdshngy2

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2023/04/23 08:13

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • チャットボットを作成して、特定のボタンを表示させ、ボタンに応じた反応をさせるようにしたい(テキスト入力によるエラーや、回答ミスを減らすため)。

前提

ここに質問の内容を詳しく書いてください。

GASでチャットボットを作って、業務に関する質問や申請をある程度自動化していければと考えています。
しかし、初めて作っているので、わからないことだらけです。
おうむ返しをする初期状態から下記コードをChatGPTの力を借りつつ、実現したいコードのサンプル例を出してもらいましたが、下記エラーメッセージが表示されてしまいます。
また、おうむ返しをする初期コード以外に反応が全くないのはエラー状態だからでしょうか?

発生している問題・エラーメッセージ

Exception: Request failed for https://chat.googleapis.com returned code 403. Truncated server response: { "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } } (use muteHttpExceptions option to examine full response) sendCard @ ボタン.gs:52 orderItem @ ボタン.gs:87

該当のソースコード

GoogleAppsScript

1function doPost(e) { 2 var response = JSON.parse(e.postData.contents); 3 var message = response.message.text; 4 5 var card = { 6 "cards": [ 7 { 8 "header": { 9 "title": "物品発注" 10 }, 11 "sections": [ 12 { 13 "widgets": [ 14 { 15 "buttons": [ 16 { 17 "textButton": { 18 "text": "物品発注", 19 "onClick": { 20 "action": { 21 "actionMethodName": "orderItem" 22 } 23 } 24 } 25 } 26 ] 27 } 28 ] 29 } 30 ] 31 } 32 ] 33 }; 34 35 return sendCard(card); 36} 37 38function sendCard(card) { 39 var payload = { 40 "cards": [card] 41 }; 42 43 var options = { 44 "method": "post", 45 "contentType": "application/json", 46 "payload": JSON.stringify(payload), 47 "headers": { 48 "Authorization": "AIzaSyDvNixZKjMFM***********BlvLtMDDmjGF10zB20" 49 } 50}; 51 52 var response = UrlFetchApp.fetch("https://chat.googleapis.com/v1/spaces/5vI8dkA**AE/messages", options); 53 return response.getContentText(); 54} 55 56function orderItem() { 57 // 物品発注処理を実行するコードをここに記述する 58 59 // 物品発注表のスプレッドシートのURLを取得する 60 var spreadsheetId = "1_xTTi_nxHtw9s5JPdnHQYknPpKzs***ZA6JR2NHajKl0"; 61 var spreadsheet = SpreadsheetApp.openById(spreadsheetId); 62 var url = spreadsheet.getUrl(); 63 64 // カードを作成する 65 var card = { 66 "cards": [ 67 { 68 "header": { 69 "title": "物品発注" 70 }, 71 "sections": [ 72 { 73 "widgets": [ 74 { 75 "textParagraph": { 76 "text": "物品発注表へのリンク: " + url 77 } 78 } 79 ] 80 } 81 ] 82 } 83 ] 84 }; 85 86 // カードをGoogle Chatに送信する 87 sendCard(card); 88} 89 90 91 92

試したこと

APIキーが作成していなかったようなので、作成し貼り付けしてみましたが改善せす。
GooglechatAPIが有効化されているかも再確認しました。

補足情報(FW/ツールのバージョンなど)

勉強しながら少しずつ進めていければと思いますが、よろしければご教示をお願いいたします。
なるべくgoogleサービスだけで完結させたいです。

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

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

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

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

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

mike2mike4

2023/04/23 10:28

AIの回答。 このエラーは、Google Apps Script (GAS) で、APIキーの設定が正しく行われていないことが原因で発生する可能性があります。APIキーは、スクリプト内の UrlFetchApp.fetch() メソッドを使用してリクエストを送信する際に、URLの末尾に key=YOUR_API_KEY の形式で追加する必要があります。 例えば、次のようなコードになります。 var response = UrlFetchApp.fetch("https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=YOUR_API_KEY", options); YOUR_API_KEY は、あなたが取得したAPIキーに置き換えてください。また、options は、リクエストのオプションを指定するオブジェクトです。
jdshngy2

2023/04/23 11:11

ありがとうございます!煮詰まっていましたので、トライしてみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問