במדריך הזה מוסבר איך להשתמש בשיטה search() במשאב Space של Google Chat API כדי לחפש מרחבים משותפים עם שם בארגון Google Workspace.
Spaceמשאב
מייצג מקום שבו אנשים ואפליקציות ל-Chat יכולים לשלוח הודעות, לשתף קבצים ולשתף פעולה. יש כמה סוגים של מרחבים:
- צ'אטים ישירים הם שיחות בין שני משתמשים או בין משתמש לבין אפליקציית Chat.
- צ'אטים קבוצתיים הם שיחות בין שלושה משתמשים או יותר לבין אפליקציות של Chat.
- מרחבים משותפים עם שם הם מקומות קבועים שבהם אנשים יכולים לשלוח הודעות, לשתף קבצים ולעבוד יחד.
אדמינים ב-Google Workspace שרוצים לחפש בכל המרחבים בארגון, כולל מרחבים פרטיים שהם לא הצטרפו אליהם, יכולים לעיין במאמר חיפוש מרחבים וניהול שלהם כאדמינים ב-Google Workspace כדי להשתמש ב-API עם הרשאות אדמין (useAdminAccess=true).
כשמחפשים מרחבים עם אימות משתמשים בלי הרשאות אדמין, השיטה מחפשת מרחבים עם שמות (spaceType מתוך SPACE) שהמשתמש המאומת יכול לגשת אליהם, כמו מרחבים שהוא חבר בהם, בארגון שלו.
דרישות מוקדמות
Node.js
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Cloud ל-Node.js.
-
יצירת פרטי כניסה של מזהה לקוח OAuth לאפליקציה למחשב. כדי להריץ את הדוגמה במדריך הזה, שומרים את פרטי הכניסה כקובץ JSON בשם
credentials.jsonבספרייה המקומית.
- בחירת היקף הרשאה שתומך באימות משתמשים.
Python
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Cloud לשימוש ב-Python.
-
יצירת פרטי כניסה של מזהה לקוח OAuth לאפליקציה למחשב. כדי להריץ את הדוגמה במדריך הזה, שומרים את פרטי הכניסה כקובץ JSON בשם
credentials.jsonבספרייה המקומית.
- בחירת היקף הרשאה שתומך באימות משתמשים.
Java
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- מתקינים את ספריית הלקוח של Cloud ל-Java.
-
יצירת פרטי כניסה של מזהה לקוח OAuth לאפליקציה למחשב. כדי להריץ את הדוגמה במדריך הזה, שומרים את פרטי הכניסה כקובץ JSON בשם
credentials.jsonבספרייה המקומית.
- בחירת היקף הרשאה שתומך באימות משתמשים.
Apps Script
- חשבון Google Workspace במהדורת Business או Enterprise עם גישה ל-Google Chat.
- מגדירים את הסביבה:
- יוצרים פרויקט ב-Google Cloud.
- הגדרת מסך ההסכמה ל-OAuth.
- מפעילים ומגדירים את Google Chat API עם שם, סמל ותיאור לאפליקציית Chat.
- יוצרים פרויקט עצמאי של Apps Script ומפעילים את שירות Chat המתקדם.
- בחירת היקף הרשאה שתומך באימות משתמשים.
חיפוש מרחבים עם אימות משתמשים
כדי לחפש מרחבים ב-Google Chat בלי הרשאות אדמין, צריך להעביר את הפרטים הבאים בבקשה:
- באימות משתמשים, מציינים את היקף ההרשאה
chat.spaces.readonlyאוchat.spaces. - מבצעים קריאה ל-
search()במשאבSpace. - מגדירים את
useAdminAccessלערךfalse(או משמיטים את הפרמטר). - מציינים את הפרמטרים של החיפוש
queryכדי לסנן את התוצאות:-
spaceType = "SPACE"– מאפיין חובה אם מציינים את מאפייןqueryוהערך הנתמך היחיד הואSPACE. -
displayName– סינון לפי שם התצוגה של המרחב באמצעות האופרטורHAS(:). לדוגמה,displayName:"Project". הטקסט שרוצים להתאים עובר טוקניזציה, וכל טוקן עובר התאמה לקידומת באופן לא תלוי-רישיות ועצמאי כמחרוזת משנה בכל מקום ב-displayName. הערה: אם הערך שלuseAdminAccessהואfalse, צריך לציין אתdisplayNameבשאילתה כדי לקבל תוצאות משמעותיות. אחרת, הפונקציה מחזירה תגובה ריקה. -
externalUserAllowed– אפשר לסנן לפי האם מותר לצרף למרחב משתמשים מחוץ לארגון (trueאוfalse).
-
- אפשר גם לציין את הפרמטר
pageSizeכדי להגביל את מספר הרווחים המקסימלי שיוחזרו (עד1000), או את הפרמטרpageTokenכדי לאחזר דפים נוספים של תוצאות. - אופציונלי, מציינים
orderByכדי למיין את תוצאות החיפוש (createTime descאוrelevance desc). הערה:relevance descזמין דרך תוכנית התצוגה המקדימה למפתחים של Google Workspace.
בשדות שונים בשאילתה, יש תמיכה רק באופרטורים AND. לדוגמה: spaceType = "SPACE" AND displayName:"Hello" AND externalUserAllowed = "true". בתוך displayName ו-externalUserAllowed, יש תמיכה באופרטורים OR אם רוצים להתאים לכמה קריטריונים.
בדוגמה הבאה מחפשים מרחבים עם שם שמכילים את המילה Project בשם המוצג שלהם:
Node.js
/**
* This sample shows how to search for spaces without administrator privileges.
*
* It relies on the @google-apps/chat npm package.
*/
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
const {ChatServiceClient} = require('@google-apps/chat');
const {auth} = require('google-auth-library');
async function main() {
// Create a client
const chatClient = new ChatServiceClient({
authClient: await auth.getClient({
scopes: ['https://www.googleapis.com/auth/chat.spaces.readonly']
})
});
// Initialize request arguments.
// When useAdminAccess is false, spaceType and displayName are required in query.
const request = {
query: 'spaceType = "SPACE" AND displayName:"Project"',
useAdminAccess: false
};
// Call the API and iterate over the paginated response
const iterable = chatClient.searchSpacesAsync(request);
for await (const result of iterable) {
console.log('Found space:', result.space.displayName, result.space.name);
}
}
main().catch(console.error);
Python
"""
This sample shows how to search for spaces without administrator privileges.
"""
from google.apps import chat_v1
import google.auth
# Read the documentation for more details:
# https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
def search_spaces():
# Create a client
scopes = ["https://www.googleapis.com/auth/chat.spaces.readonly"]
credentials, _ = google.auth.default(scopes=scopes)
client = chat_v1.ChatServiceClient(credentials=credentials)
# Initialize request arguments.
# When use_admin_access is False, space_type and display_name are required in query.
request = chat_v1.SearchSpacesRequest(
query='spaceType = "SPACE" AND displayName:"Project"',
use_admin_access=False
)
# Make the request and iterate over the paginated results.
page_result = client.search_spaces(request)
for result in page_result.results:
print(f"Found space: {result.space.display_name} ({result.space.name})")
if __name__ == "__main__":
search_spaces()
Java
/**
* This sample shows how to search for spaces without administrator privileges.
*/
import com.google.chat.v1.ChatServiceClient;
import com.google.chat.v1.ChatServiceClient.SearchSpacesPagedResponse;
import com.google.chat.v1.SearchSpacesRequest;
import com.google.chat.v1.SearchSpaceResult;
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
public class SearchSpaces {
public static void main(String[] args) throws Exception {
// See https://github.com/googleworkspace/java-samples/blob/main/chat/client-libraries/cloud/src/main/java/com/google/workspace/api/chat/samples/AuthenticationUtils.java
// for an example of how to authenticate the request.
try (ChatServiceClient chatServiceClient = AuthenticationUtils.createClientWithUserCredentials(
ImmutableList.of("https://www.googleapis.com/auth/chat.spaces.readonly"))) {
SearchSpacesRequest request = SearchSpacesRequest.newBuilder()
.setQuery("spaceType = \"SPACE\" AND displayName:\"Project\"")
.setUseAdminAccess(false)
.build();
SearchSpacesPagedResponse response = chatServiceClient.searchSpaces(request);
for (SearchSpaceResult result : response.iterateAll()) {
System.out.printf("Found space: %s (%s)\n", result.space.getDisplayName(), result.space.getName());
}
}
}
}
Apps Script
/**
* This sample shows how to search for spaces without administrator privileges.
*/
// Read the documentation for more details:
// https://developers.google.com/workspace/chat/api/reference/rest/v1/spaces/search
function searchSpaces() {
try {
// Call the API
// When useAdminAccess is false, spaceType and displayName are required in query.
const response = Chat.Spaces.search({
query: 'spaceType = "SPACE" AND displayName:"Project"',
useAdminAccess: false
});
if (response.results && response.results.length > 0) {
response.results.forEach(result => {
console.log('Found space: %s (%s)', result.space.displayName, result.space.name);
});
} else {
console.log('No matching spaces found.');
}
} catch (err) {
console.log('Failed to search spaces: ' + err.message);
}
}
Chat API מחזיר רשימה עם מספור עמודים של חללים שתואמים לשאילתה ושהמשתמש שקורא ל-API יכול לגשת אליהם.
נושאים קשורים
- איך יוצרים מרחבים
- הגדרת מרחב
- איך מקבלים פרטים על מרחב
- הצגת רשימה של מרחבים
- עדכון המרחב
- מחיקת מרחב
- חיפוש מרחבים וניהול שלהם כאדמינים ב-Google Workspace