From a55b088612d775a34882b96bc9efce3fd25abab9 Mon Sep 17 00:00:00 2001 From: Gustavo Tondello Date: Thu, 30 Jul 2026 15:11:17 +0000 Subject: [PATCH] feat: Add samples for Chat search messages API --- advanced/chat.gs | 42 +++++++++++++++++++++++++++++++++++ chat/advanced-service/Main.gs | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/advanced/chat.gs b/advanced/chat.gs index e8d366a5c..162e03eaa 100644 --- a/advanced/chat.gs +++ b/advanced/chat.gs @@ -120,3 +120,45 @@ function listMemberships(spaceName) { } } // [END chat_list_memberships] + +// [START chat_search_messages] +/** + * Searches for unread messages for the caller user in all Chat spaces. + */ +function searchMessages() { + let response; + let pageToken = null; + try { + do { + response = Chat.Spaces.Messages.search( + { + filter: 'is_unread()' + }, + 'spaces/-', + { + pageSize: 10, + pageToken: pageToken, + } + ); + if (!response.results || response.results.length === 0) { + pageToken = response.nextPageToken; + continue; + } + for (const result of response.results) { + const message = result.message; + console.log( + "**%s at %s in %s:**\n%s", + message.sender.name, + message.createTime, + message.space.name, + message.text, + ); + } + pageToken = response.nextPageToken; + } while (pageToken); + } catch (err) { + // TODO (developer) - Handle exception + console.log("Failed with error %s", err.message); + } +} +// [END chat_search_messages] diff --git a/chat/advanced-service/Main.gs b/chat/advanced-service/Main.gs index 48300da5a..b886391e1 100644 --- a/chat/advanced-service/Main.gs +++ b/chat/advanced-service/Main.gs @@ -771,6 +771,46 @@ function listSpacesUserCred() { } // [END chat_list_spaces_user_cred] +// [START chat_search_messages_user_cred] +/** + * This sample shows how to search messages with user credential + * + * It relies on the OAuth2 scope 'https://www.googleapis.com/auth/chat.messages.readonly' + * referenced in the manifest file (appsscript.json). + */ +function searchMessagesUserCred() { + // Initialize request argument(s) + // TODO(developer): Replace FILTER here with an actual filter query + const filter = "FILTER"; + const parent = "spaces/-"; + + // Iterate through the response pages using page tokens + let responsePage; + let pageToken = null; + do { + // Request response pages + responsePage = Chat.Spaces.Messages.search( + { + filter: filter, + }, + parent, + { + pageSize: 10, + pageToken: pageToken, + } + ); + // Handle response pages + if (responsePage.results) { + for (const result of responsePage.results) { + console.log(result); + } + } + // Update the page token to the next one + pageToken = responsePage.nextPageToken; + } while (pageToken); +} +// [END chat_search_messages_user_cred] + // [START chat_set_up_space_user_cred] /** * This sample shows how to set up a named space with one initial member with