Google Workspace kuruluşunuzun Google Chat alanlarını arama ve yönetme

Bu kılavuzda, Google Workspace yöneticisinin kuruluşundaki adlandırılmış alanları yönetmek ve yönetim görevlerini gerçekleştirmek için Google Chat API'nin search() yöntemini Space kaynağında nasıl kullanabileceği açıklanmaktadır.

Google Workspace yöneticisi olarak, Chat API'yi yalnızca SPACE'nin SpaceType olarak tanımlanan adlandırılmış alanlarını yönetmek için kullanabilirsiniz. Adlandırılmış alanlar, kullanıcıların mesaj gönderdiği, dosya paylaştığı ve ortak çalıştığı kalıcı yerlerdir. Doğrudan mesajları veya grup sohbetlerini yönetmek için Chat API'yi kullanamazsınız.

Space Kaynağı, kullanıcıların ve Chat uygulamalarının mesaj gönderebileceği, dosya paylaşabileceği ve ortak çalışma yapabileceği bir yeri temsil eder. Birkaç tür alan vardır:

  • Doğrudan mesajlar (DM), iki kullanıcı veya bir kullanıcı ile bir Chat uygulaması arasındaki görüşmelerdir.
  • Grup sohbetleri, üç veya daha fazla kullanıcı ile sohbet uygulamaları arasındaki görüşmelerdir.
  • Adlandırılmış alanlar, kullanıcıların mesaj gönderdiği, dosya paylaştığı ve ortak çalıştığı kalıcı yerlerdir.

Google Workspace yöneticisi olarak, kuruluşunuzdaki adlandırılmış alanları aramak ve yönetmek için Chat API'yi aşağıdaki şekillerde kullanabilirsiniz:

  • Kuruluşun alanlarını denetleme. search() yöntemini kullanarak bir kuruluştaki tüm alanların listesini, her alanın ayarları ve meta verileri (ör. oluşturma tarihi, son etkinlik tarihi, üye sayısı, geçmiş ayarının durumu ve harici konukları davet etme özelliği) hakkında ayrıntılı bilgilerle birlikte alabilirsiniz.
  • Etkin olmayan alanları bulup silme search() yöntemini kullanarak, belirtilen tarih ve saatten beri kullanılmayan alanları bulup silebilirsiniz. Daha fazla bilgi ve örnek kod için Etkin olmayan alanları bulma ve silme başlıklı makaleyi inceleyin.
  • Arama ölçütlerine göre alan listesini dışa aktarma search() yöntemini kullanarak query içinde belirtilen ölçütleri karşılayan alanların listesini alabilir ve sonuçları analiz için bir CSV dosyasına aktarabilirsiniz.
  • Alan yöneticilerini bulup iletişime geçin. search() yöntemini kullanarak bir kuruluştaki tüm alanların listesini alabilir, ardından members.list() yöntemini kullanarak yönetici olan tüm alan üyelerinin listesini alabilirsiniz.
  • Belirlenmiş yöneticisi olmayan alanları bulma search() yöntemini kullanarak bir kuruluştaki tüm alanların listesini alabilir, ardından members.list() yöntemini kullanarak yöneticisi olmayan alanların listesini alabilirsiniz.

Ön koşullar

Python

Google Chat API'sini yönetici olarak çağırma

Yönetici ayrıcalıklarına sahip bir kullanıcı olarak kimliğinizi doğrulamak için isteğinizde aşağıdakileri iletmeniz gerekir:

  • Kullanıcı kimlik doğrulamasını yönetici ayrıcalıklarıyla kullanmayı destekleyen bir yetkilendirme kapsamı belirtin.
  • useAdminAccess alanını true olarak ayarlayın.

Bu bölümde, Chat API'nin yönetici olarak çağrılmasıyla ilgili aşağıdaki örnekler gösterilmektedir:

  • search() yöntemini çağırarak alan arama.
  • search() yöntemini çağırarak kuruluşunuzdaki etkin olmayan alanları bulup silin. Bu yöntem, etkin olmayan alanların listesini döndürür. Ardından delete() yöntemini çağırarak bu alanları silebilirsiniz.

Kuruluşunuzdaki alanları arama

Bu örnekte, Google Workspace yöneticilerinin Chat API'nin Space kaynağındaki search() yöntemini kullanarak kuruluş genelinde belirtilen ölçütlere göre alan arama işlemini nasıl yapabileceği açıklanmaktadır.

search() yöntemini kullanıcı kimlik doğrulaması ve yönetici ayrıcalıkları ile çağırmak için istekte aşağıdakileri belirtmeniz gerekir:

  • chat.admin.spaces veya chat.admin.spaces.readonly yetkilendirme kapsamını belirtin.
  • useAdminAccess=true değerini belirtin.
  • Sonuçları filtrelemek için arama query parametrelerini belirtin:
    • customer = "customers/my_customer" - zorunludur ve desteklenen tek değer customers/my_customer'dir.
    • spaceType = "SPACE": Zorunludur ve desteklenen tek değer SPACE'dir.
    • İsteğe bağlı olarak, alan aramanızı daha da filtrelemek için bir veya daha fazla ek sorgu (ör. görünen adlardaki anahtar kelimeler (displayName), oluşturma tarihi (createTime) veya alan etkinliğine göre (lastActiveTime)).

Aşağıdaki kodda, yönetici ayrıcalıklarını kullanarak "Hello" ve "World" kelimelerini herhangi bir kombinasyonla içeren görünen ada sahip alanları arama örneği gösterilmektedir:

Python

  1. Çalışma dizininizde search_spaces_for_hello_world.py adlı bir dosya oluşturun.
  2. search_spaces_for_hello_world.py'ya aşağıdaki kodu ekleyin:

    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. Çalışma dizininizde örneği oluşturun ve çalıştırın:

    python3 search_spaces_for_hello_world.py

Etkin olmayan alanları bulma ve silme

Bu örnekte, Google Workspace yöneticilerinin Chat API'nin Space kaynağında search() yöntemini kullanarak etkin olmayan alanları nasıl bulabileceği ve ardından delete() yöntemini useAdminAccess parametresiyle kullanarak bunları nasıl silebileceği açıklanmaktadır.

Etkin olmayan Google Chat alanları (artık etkin olarak kullanılmayanlar) değerli depolama alanını kaplayabilir ve kullanıcı arayüzünde dağınıklığa neden olabilir. search() yöntemini kullanarak yöneticiler, belirli bir tarih ve saatten (ör. iki ay önce) beri kullanılmayan alanları bulabilir. Alan listesi numaralandırıldıktan sonra yöneticiler bu alanlarla ilgili işlem yapabilir (ör. güncelleme veya silme).

Etkin olmayan alanların listesini aramak ve ardından kullanıcı kimlik doğrulaması ve yönetici ayrıcalıkları ile silmek için, isteklerinizde aşağıdakileri iletin:

  • Etkin olmayan alanları aramak için aşağıdakileri belirtin:
    • chat.admin.spaces veya chat.admin.spaces.readonly yetkilendirme kapsamını belirtin.
    • Spaces kaynağında search() yöntemini çağırın.
    • INACTIVE_SPACE_DEADLINE değerini, döndürülecek alanları belirleyen son etkinliğin tarih ve saatine ayarlayın.
    • useAdminAccess=true değerini belirtin.
    • Sonuçları filtrelemek için arama query parametrelerini belirtin:
      • customer = "customers/my_customer": Zorunludur ve desteklenen tek değer customers/my_customer'dir.
      • spaceType = "SPACE": Zorunludur ve desteklenen tek değer SPACE'dir.
      • lastActiveTime - İsteğinizi yalnızca etkin olmayan alanları döndürecek şekilde filtrelemek için lastActiveTime
  • Etkin olmayan alanları arama sonuçlarından silmek için aşağıdakileri belirtin:
    • chat.admin.delete yetkilendirme kapsamını belirtin.
    • delete() kaynağında Spaces yöntemini çağırın.
    • useAdminAccess=true değerini belirtin.

Aşağıdaki kodda, yönetici ayrıcalıklarını kullanarak etkin olmayan alanları arama ve silme örneği gösterilmektedir:

Python

  1. Çalışma dizininizde find_and_delete_inactive_spaces.py adlı bir dosya oluşturun.

  2. find_and_delete_inactive_spaces.py'ya aşağıdaki kodu ekleyin:

    
    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. Koddaki INACTIVE_DATE yerine YYYY-AA-GGTSS:DD:SS+SS:DD biçiminde bir tarih ve saat girin. Örneğin, "2024-06-01T00:00:00+00:00".

  4. Çalışma dizininizde örneği oluşturun ve çalıştırın:

    python3 find_and_delete_inactive_spaces.py