From e6a75f3e22b1b509f584c13f27c936df589323bd Mon Sep 17 00:00:00 2001 From: pierrick Date: Tue, 9 Dec 2025 03:45:25 +0000 Subject: [PATCH 1/2] feat: add chat webhook app --- solutions/webhook-chat-app/README.md | 4 +++ solutions/webhook-chat-app/thread-reply.gs | 32 ++++++++++++++++++++++ solutions/webhook-chat-app/webhook.gs | 29 ++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 solutions/webhook-chat-app/README.md create mode 100644 solutions/webhook-chat-app/thread-reply.gs create mode 100644 solutions/webhook-chat-app/webhook.gs diff --git a/solutions/webhook-chat-app/README.md b/solutions/webhook-chat-app/README.md new file mode 100644 index 000000000..596438605 --- /dev/null +++ b/solutions/webhook-chat-app/README.md @@ -0,0 +1,4 @@ +# Google Chat App Webhook + +Please see related guide on how to +[send messages to Google Chat with incoming webhooks](https://developers.google.com/workspace/chat/quickstart/webhooks). diff --git a/solutions/webhook-chat-app/thread-reply.gs b/solutions/webhook-chat-app/thread-reply.gs new file mode 100644 index 000000000..07c74a51a --- /dev/null +++ b/solutions/webhook-chat-app/thread-reply.gs @@ -0,0 +1,32 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// [START chat_webhook_thread] +function webhook() { + const url = "https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY&token=TOKEN&messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD" + const options = { + "method": "post", + "headers": {"Content-Type": "application/json; charset=UTF-8"}, + "payload": JSON.stringify({ + "text": "Hello from Apps Script!", + "thread": {"threadKey": "THREAD_KEY_VALUE"} + }) + }; + const response = UrlFetchApp.fetch(url, options); + console.log(response); +} +// [END chat_webhook_thread] diff --git a/solutions/webhook-chat-app/webhook.gs b/solutions/webhook-chat-app/webhook.gs new file mode 100644 index 000000000..2d1384bef --- /dev/null +++ b/solutions/webhook-chat-app/webhook.gs @@ -0,0 +1,29 @@ +/** + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +// [START chat_webhook] +function webhook() { + const url = "https://chat.googleapis.com/v1/spaces/SPACE_ID/messages" + const options = { + "method": "post", + "headers": {"Content-Type": "application/json; charset=UTF-8"}, + "payload": JSON.stringify({"text": "Hello from Apps Script!"}) + }; + const response = UrlFetchApp.fetch(url, options); + console.log(response); +} +// [END chat_webhook] From 7a38ba735b2874c089558a689ffe2b7ddb34c77e Mon Sep 17 00:00:00 2001 From: pierrick Date: Tue, 9 Dec 2025 04:36:19 +0000 Subject: [PATCH 2/2] improve indentation --- solutions/webhook-chat-app/thread-reply.gs | 4 +++- solutions/webhook-chat-app/webhook.gs | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/solutions/webhook-chat-app/thread-reply.gs b/solutions/webhook-chat-app/thread-reply.gs index 07c74a51a..ecd2451de 100644 --- a/solutions/webhook-chat-app/thread-reply.gs +++ b/solutions/webhook-chat-app/thread-reply.gs @@ -23,7 +23,9 @@ function webhook() { "headers": {"Content-Type": "application/json; charset=UTF-8"}, "payload": JSON.stringify({ "text": "Hello from Apps Script!", - "thread": {"threadKey": "THREAD_KEY_VALUE"} + "thread": { + "threadKey": "THREAD_KEY_VALUE" + } }) }; const response = UrlFetchApp.fetch(url, options); diff --git a/solutions/webhook-chat-app/webhook.gs b/solutions/webhook-chat-app/webhook.gs index 2d1384bef..53362efb0 100644 --- a/solutions/webhook-chat-app/webhook.gs +++ b/solutions/webhook-chat-app/webhook.gs @@ -17,11 +17,13 @@ // [START chat_webhook] function webhook() { - const url = "https://chat.googleapis.com/v1/spaces/SPACE_ID/messages" + const url = "https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY&token=TOKEN" const options = { "method": "post", "headers": {"Content-Type": "application/json; charset=UTF-8"}, - "payload": JSON.stringify({"text": "Hello from Apps Script!"}) + "payload": JSON.stringify({ + "text": "Hello from Apps Script!" + }) }; const response = UrlFetchApp.fetch(url, options); console.log(response);