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

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

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

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

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

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

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

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

Python

  • צריכות להיות לכם הרשאות אדמין לניהול צ'אטים ושיחות במרחבים משותפים בארגון שלכם ב-Google Workspace.

קריאה ל-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(
        'client_secrets.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. בספריית העבודה, יוצרים ומריצים את הדוגמה:

    python3 search_spaces_for_hello_world.py

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

בדוגמה הזו מוסבר איך אדמינים ב-Google Workspace יכולים להשתמש ב-method‏ search() במשאב Space של Chat API כדי למצוא מרחבים משותפים לא פעילים, ואז למחוק אותם באמצעות ה-method‏ 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(
          'client_secrets.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. בספריית העבודה, יוצרים ומריצים את הדוגמה:

    python3 find_and_delete_inactive_spaces.py