Alan arama

Bu kılavuzda, Google Workspace kuruluşunda adlandırılmış alanları aramak için Google Chat API'nin search() yönteminin Space kaynağında nasıl kullanılacağı açıklanmaktadır.

Space Kaynak, 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öneticisiyseniz ve katılmadığınız özel alanlar da dahil olmak üzere kuruluşunuzdaki tüm alanlarda arama yapmak istiyorsanız yönetici ayrıcalıklarıyla (useAdminAccess=true) API'yi çağırmak için Google Workspace yöneticisi olarak alanları arama ve yönetme başlıklı makaleyi inceleyin.

Yönetici ayrıcalıkları olmadan kullanıcı kimlik doğrulaması olan alanları ararken yöntem, kimliği doğrulanmış kullanıcının erişebildiği adlandırılmış alanları (spaceType of SPACE) arar. Örneğin, kuruluşunda üyesi olduğu alanlar.

Ön koşullar

Node.js

Python

Java

Apps Komut Dosyası

Kullanıcı kimlik doğrulamasıyla alanları arama

Google Chat'te yönetici ayrıcalıkları olmadan alan aramak için isteğinizde aşağıdakileri iletin:

  • Kullanıcı kimlik doğrulaması ile chat.spaces.readonly veya chat.spaces yetkilendirme kapsamını belirtin.
  • Space kaynağında search() yöntemini çağırın.
  • useAdminAccess değerini false olarak ayarlayın (veya parametreyi atlayın).
  • Sonuçları filtrelemek için arama query parametrelerini belirtin:
    • spaceType = "SPACE": query belirtildiğinde zorunludur ve desteklenen tek değer SPACE'dir.
    • displayName: HAS (:) operatörünü kullanarak alanın görünen adına göre filtreleyin. Örneğin, displayName:"Project". Eşleştirilecek metin, jetonlara ayrılır ve her jeton, büyük/küçük harfe duyarlı olmadan ve bağımsız olarak, alanın displayName herhangi bir yerinde alt dize olarak önekle eşleştirilir. Not: useAdminAccess false olduğunda anlamlı sonuçlar almak için sorgunuzda displayName gereklidir. Aksi takdirde yöntem boş bir yanıt döndürür.
    • externalUserAllowed: İsteğe bağlı olarak, harici konuklara alanda izin verilip verilmediğine göre filtreleyin (true veya false).
  • İsteğe bağlı olarak, döndürülecek maksimum alan sayısını sınırlamak için pageSize (1000'e kadar) veya sonuçların sonraki sayfalarını almak için pageToken değerini belirtin.
  • İsteğe bağlı olarak, arama sonuçlarını sıralamak için orderBy değerini belirtin (createTime desc veya relevance desc). Not: relevance desc, Google Workspace Geliştirici Önizlemesi Programı aracılığıyla kullanılabilir.

Sorgudaki farklı alanlarda yalnızca AND operatörleri desteklenir. Örneğin: spaceType = "SPACE" AND displayName:"Hello" AND externalUserAllowed = "true". displayName ve externalUserAllowed içinde, birden fazla ölçütle eşleşmek istiyorsanız OR operatörleri desteklenir.

Aşağıdaki örnekte, görünen adında "Proje" kelimesi geçen adlandırılmış alanlar aranmaktadır:

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 Komut Dosyası

/**
 * 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, sorguyla eşleşen ve çağıran kullanıcının erişebildiği sayfalandırılmış alan listesini döndürür.