חיפוש וניהול מרחבים ב-Google Chat של הארגון ב-Google Workspace

במדריך הזה מוסבר איך אדמינים ב-Google Workspace יכולים להשתמש בשיטת search() במשאב Space של Google Chat API כדי לנהל מרחבים עם שמות בארגון שלהם ולבצע משימות אדמיניסטרטיביות.

אדמינים ב-Google Workspace יכולים להשתמש ב-Chat API רק כדי לנהל מרחבים עם שם, שהם SpaceType של SPACE. מרחבים משותפים עם שם הם מקומות קבועים שבהם אנשים יכולים לשלוח הודעות, לשתף קבצים ולעבוד יחד. אי אפשר להשתמש ב-Chat API כדי לנהל צ'אטים ישירים או צ'אטים קבוצתיים.

משאב Space מייצג מקום שבו אנשים ואפליקציות ל-Chat יכולים לשלוח הודעות, לשתף קבצים ולשתף פעולה. יש כמה סוגים של מרחבים:

  • צ'אטים ישירים הם שיחות בין שני משתמשים או בין משתמש לבין אפליקציית Chat.
  • צ'אטים קבוצתיים הם שיחות בין שלושה משתמשים או יותר לבין אפליקציות ל-Chat.
  • מרחבים משותפים עם שם הם מקומות קבועים שבהם אנשים יכולים לשלוח הודעות, לשתף קבצים ולעבוד יחד.

אדמינים ב-Google Workspace יכולים להשתמש ב-Chat API כדי לחפש ולנהל מרחבים עם שם בארגון שלהם בדרכים הבאות:

  • ביקורת של מרחבים בארגון. באמצעות השיטה search(), אפשר לאחזר רשימה של כל המרחבים בארגון עם מידע מפורט על ההגדרות והמטא-נתונים של כל מרחב, כמו תאריך היצירה, תאריך הפעילות האחרונה, מספר החברים, הסטטוס של הגדרת ההיסטוריה והאפשרות להזמין אורחים חיצוניים.
  • איך למצוא ולמחוק מרחבים לא פעילים באמצעות השיטה search(), אפשר למצוא מרחבים שלא היו בשימוש מאז תאריך ושעה ספציפיים, ואז למחוק אותם. פרטים נוספים וקוד לדוגמה זמינים במאמר בנושא איתור ומחיקה של מרחבים לא פעילים.
  • ייצוא רשימה של מרחבים על סמך קריטריונים לחיפוש באמצעות השיטה search(), אפשר לאחזר רשימה של מרחבים שעומדים בקריטריונים שצוינו ב-query ולייצא את התוצאות לקובץ CSV לצורך ניתוח.
  • איך מחפשים מנהלים של מרחבים ויוצרים איתם קשר באמצעות ה-method‏ search() אפשר לאחזר רשימה של כל החללים בארגון, ואז להשתמש ב-method‏ members.list() כדי לאחזר רשימה של כל החברים בחלל שיש להם הרשאות ניהול.
  • חיפוש מרחבים ללא מנהלים מוגדרים באמצעות ה-method‏ search() אפשר לאחזר רשימה של כל המרחבים בארגון, ואז להשתמש ב-method‏ members.list() כדי לאחזר רשימה של מרחבים שאין להם מנהלים.

דרישות מוקדמות

Python

שליחת קריאה ל-Google Chat API כאדמין

כדי לבצע אימות כמשתמש עם הרשאות אדמין, צריך להעביר את הפרטים הבאים בבקשה:

  • מציינים היקף הרשאות שתומך בשימוש באימות משתמש עם הרשאות אדמין.
  • מגדירים את השדה useAdminAccess לערך true.

בקטע הזה מוצגות הדוגמאות הבאות של קריאה ל-Chat API בתור אדמין:

חיפוש מרחבים בארגון

בדוגמה הזו מוסבר איך אדמינים ב-Google Workspace יכולים להשתמש בשיטה search() במשאב Space של Chat API כדי לחפש מרחבים בארגון על סמך קריטריונים שצוינו.

כדי לבצע קריאה ל-method‏ search() עם אימות משתמש והרשאות אדמין, צריך לציין בבקשה את הפרטים הבאים:

  • מציינים את היקף ההרשאות של chat.admin.spaces או chat.admin.spaces.readonly.
  • מציינים את useAdminAccess=true.
  • מציינים את פרמטרים החיפוש query כדי לסנן את התוצאות:
    • customer = "customers/my_customer" – שדה חובה, והערך הנתמך היחיד הוא customers/my_customer
    • spaceType = "SPACE" – חובה, והערך הנתמך היחיד הוא SPACE
    • אופציונלי: שאילתה אחת או יותר לסינון נוסף של החיפוש במרחב, כמו מילות מפתח בשמות לתצוגה (displayName), תאריך היצירה (createTime) או לפי הפעילות במרחב (lastActiveTime).

בדוגמת הקוד הבאה מוצג איך להשתמש בהרשאות אדמין כדי לחפש מרחבים עם שם מוצג שמכיל את המילים Hello ו-World, בכל שילוב:

Python

  1. בספריית העבודה, יוצרים קובץ בשם search_spaces_for_hello_world.py.
  2. מוסיפים את הקוד הבא אל search_spaces_for_hello_world.py:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    SCOPES = [
      'https://www.googleapis.com/auth/chat.admin.spaces.readonly',
    ]
    
    def main():
    # Authenticate with Google Workspace
    # and get user authorization.
    flow = InstalledAppFlow.from_client_secrets_file(
        'credentials.json',
        SCOPES,
    )
    creds = flow.run_local_server()
    
    # Build a service endpoint for Chat API.
    chat = build('chat', 'v1', credentials=creds)
    
    spaces = []
    page_token = ''
    
    # Search for all spaces.
    while True:
      result = (
          chat.spaces()
          .search(
              useAdminAccess=True,
              query=(
                'customer = "customers/my_customer"'
                'AND spaceType = "SPACE"'
                'AND displayName:"Hello World"'
                )
    pageToken=page_token,
          )
          .execute()
      )
      if 'spaces' not in result:
        print('No spaces found named Hello World.')
        return
      spaces.extend(result['spaces'])
      if 'nextPageToken' in result:
        page_token = result['nextPageToken']
      else:
        break
    
    print(str(len(spaces)) + ' spaces found:')
    # Prints the list of spaces.
    print(spaces)
    
  3. בספריית העבודה, מבצעים build ומריצים את הדוגמה:

    python3 search_spaces_for_hello_world.py

איך למצוא ולמחוק מרחבים לא פעילים

בדוגמה הזו מוסבר איך אדמינים ב-Google Workspace יכולים להשתמש בשיטה search() במשאב Space של Chat API כדי למצוא מרחבים לא פעילים ואז למחוק אותם באמצעות השיטה delete() עם הפרמטר useAdminAccess.

מרחבים לא פעילים ב-Google Chat – כאלה שכבר לא נעשה בהם שימוש פעיל – יכולים לתפוס נפח אחסון יקר ערך ולגרום לעומס בממשק המשתמש. באמצעות שיטת search(), אדמינים יכולים למצוא מרחבים שלא נעשה בהם שימוש מאז תאריך ושעה ספציפיים, למשל לפני חודשיים. אחרי שהרשימה של המרחבים המשותפים מוצגת, האדמינים יכולים לבצע בהם פעולות, כמו עדכון או מחיקה.

כדי לחפש רשימה של מרחבים לא פעילים ואז למחוק אותם באמצעות אימות משתמש והרשאות אדמין, צריך להעביר את הפרטים הבאים בבקשות:

  • כדי לחפש מרחבים לא פעילים, מציינים את הפרטים הבאים:
    • מציינים את היקף ההרשאות של chat.admin.spaces או chat.admin.spaces.readonly.
    • מפעילים את השיטה search() במשאב Spaces.
    • מגדירים את INACTIVE_SPACE_DEADLINE לתאריך ולשעה של הפעילות האחרונה שקובעת את המקומות שיוחזרו.
    • מציינים את useAdminAccess=true.
    • מציינים את פרמטרים החיפוש query כדי לסנן את התוצאות:
      • customer = "customers/my_customer" – שדה חובה, והערך הנתמך היחיד הוא customers/my_customer
      • spaceType = "SPACE" – חובה, והערך הנתמך היחיד הוא SPACE
      • lastActiveTime – כדי לסנן את הבקשה כך שיוחזרו רק מרחבים לא פעילים, מציינים את lastActiveTime
  • כדי למחוק את המרחבים הלא פעילים מתוצאות החיפוש, מציינים את הפרטים הבאים:
    • מציינים את chat.admin.delete היקף ההרשאה.
    • מפעילים את השיטה delete() במשאב Spaces.
    • מציינים את useAdminAccess=true.

בדוגמה הבאה של קוד אפשר לראות איך מחפשים מרחבים לא פעילים ומוחקים אותם באמצעות הרשאות אדמין:

Python

  1. בספריית העבודה, יוצרים קובץ בשם find_and_delete_inactive_spaces.py.

  2. מוסיפים את הקוד הבא אל find_and_delete_inactive_spaces.py:

    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    SCOPES = [
        'https://www.googleapis.com/auth/chat.admin.spaces.readonly',
        'https://www.googleapis.com/auth/chat.admin.delete',
    ]
    
    # Any spaces that have not been active since this time will be deleted.
    INACTIVE_SPACE_DEADLINE = '"INACTIVE_DATE"'
    
    def main():
      # Authenticate with Google Workspace
      # and get user authorization.
      flow = InstalledAppFlow.from_client_secrets_file(
          'credentials.json',
          SCOPES,
      )
      creds = flow.run_local_server()
    
      # Build a service endpoint for Chat API.
      chat = build('chat', 'v1', credentials=creds)
    
      spaces = []
      page_token = ''
    
      # Search for all inactive spaces.
      while True:
        result = (
            chat.spaces()
            .search(
                useAdminAccess=True,
                query=(
                    'customer = "customers/my_customer" AND spaceType = "SPACE" AND'
                    ' lastActiveTime < '
                )
                + INACTIVE_SPACE_DEADLINE,
                pageToken=page_token,
            )
            .execute()
        )
        if 'spaces' not in result:
          print('No inactive spaces found.')
          return
        spaces.extend(result['spaces'])
        if 'nextPageToken' in result:
          page_token = result['nextPageToken']
        else:
          break
    
      print(str(len(spaces)) + ' inactive spaces found:')
      # Prints the list of inactive spaces.
      print(spaces)
    
      # Delete all inactive spaces.
      for space in spaces:
        (
            chat.spaces()
            .delete(
                useAdminAccess=True,
                name=space['name'],
            )
            .execute()
        )
        print(
            'Deleted space: '
            + space['displayName']
            + ', Resource Name: '
            + space['name']
        )
    
    if __name__ == '__main__':
      main()
    
  3. בקטע הקוד, מחליפים את INACTIVE_DATE בתאריך ובשעה בפורמט YYYY-MM-DDTHH:MM:SS+HH:MM. לדוגמה: ‎"2024-06-01T00:00:00+00:00".

  4. בספריית העבודה, מבצעים build ומריצים את הדוגמה:

    python3 find_and_delete_inactive_spaces.py