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

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

Google Workspace yöneticisi olarak Chat API'yi yalnızca SPACE'ın 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ı (DM'ler) 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ışabileceği bir yeri temsil eder. Birkaç alan türü vardır:

  • Doğrudan mesajlar (DM'ler), iki kullanıcı veya bir kullanıcı ile Chat uygulaması arasındaki görüşmelerdir.
  • Grup sohbetleri, üç veya daha fazla kullanıcı ile Chat 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 yöntemlerle kullanabilirsiniz:

  • Kuruluştaki alanları denetleyin. search() yöntemini kullanarak, her alanın ayarları ve meta verileri (ör. oluşturulma tarihi, son etkinlik tarihi, üye sayısı, geçmiş ayarı durumu ve harici konuk davet etme özelliği) hakkında ayrıntılı bilgiler içeren bir kuruluştaki tüm alanların listesini alabilirsiniz.
  • Etkin olmayan alanları bulup silebilirsiniz. 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 bir alan listesi 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 onlarla iletişime geçin. search() yöntemini kullanarak bir kuruluştaki tüm alanların listesini alabilir, ardından yönetici olan tüm alan üyelerinin listesini almak için members.list() yöntemini kullanabilirsiniz.
  • Atanmış 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'yi yönetici olarak çağırma

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

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

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

  • search() yöntemini çağırarak alan arayın.
  • Etkin olmayan alanların listesini döndürmek için search() yöntemini, ardından bu alanları silmek için delete() yöntemini çağırarak kuruluşunuzdaki etkin olmayan alanları bulup silin.

Kuruluş genelinde alan 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 araması yapmaları 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 aramaquery parametrelerini belirtin:
    • customer = "customers/my_customer": Zorunludur ve desteklenen tek değer customers/my_customer'dur.
    • spaceType = "SPACE": Zorunludur ve yalnızca SPACE değeri desteklenir.
    • İ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şturulma tarihi (createTime) veya alan etkinliğine göre (lastActiveTime)).

Aşağıdaki kodda, "Merhaba" ve "Dünya" kelimelerini herhangi bir kombinasyonda içeren görünen ada sahip alanları aramak için yönetici ayrıcalıklarının nasıl kullanılacağı 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 dosyasına 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(
        '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. Çalışma dizininizde örneği derleyip ç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 bulabilecekleri ve ardından useAdminAccess parametresini içeren delete() yöntemini kullanarak bu alanları nasıl silebilecekleri açıklanmaktadır.

Etkin olmayan Google Chat alanları (artık etkin olarak kullanılmayan alanlar) değerli depolama alanı kaplar ve kullanıcı arayüzünde dağınıklığa neden olabilir. Yöneticiler, search() yöntemini kullanarak iki ay önce gibi belirli bir tarih ve saatten 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ı ile yönetici ayrıcalıkları kullanarak bu alanları silmek için isteklerinize aşağıdakileri ekleyin:

  • 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 tarihi ve saatine ayarlayın.
    • useAdminAccess=true değerini belirtin.
    • Sonuçları filtrelemek için aramaquery parametrelerini belirtin:
      • customer = "customers/my_customer": Zorunludur ve desteklenen tek değer customers/my_customer'tır.
      • spaceType = "SPACE": Zorunludur ve yalnızca SPACE değeri desteklenir.
      • 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.
    • Spaces kaynağında delete() yöntemini çağırın.
    • useAdminAccess=true değerini belirtin.

Aşağıdaki kodda, etkin olmayan alanların nasıl aranacağı ve yönetici ayrıcalıkları kullanılarak nasıl silineceğ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 dosyasına 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(
          '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. Kodda INACTIVE_DATE değerini YYYY-AA-GGTTSS:DD:SS+SS:DD biçiminde bir tarih ve saatle değiştirin. Örneğin, "2024-06-01T00:00:00+00:00".

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

    python3 find_and_delete_inactive_spaces.py