Partilhar via


Usar chamadas de busca externa em Scripts do Office

Este script obtém informações básicas sobre os repositórios do GitHub de um utilizador. Mostra como utilizar fetch num cenário simples. Para obter mais informações sobre como utilizar fetch ou outras chamadas externas, leia Suporte de chamadas à API Externa em Scripts do Office. Para obter informações sobre como trabalhar com objetos JSON , como o que é devolvido pelas APIs do GitHub, leia Utilizar JSON para transmitir dados de e para scripts do Office.

Saiba mais sobre as APIs do GitHub que estão a ser utilizadas na referência da API do GitHub. Também pode ver o resultado da chamada à API não processada visitando https://api.github.com/users/{USERNAME}/repos num browser (certifique-se de que substitui o marcador de posição {USERNAME} pelo seu ID do GitHub).

Obter exemplo de informações sobre repositórios

Código de exemplo: obter informações básicas sobre os repositórios do GitHub do utilizador

Execute o seguinte script no livro de exemplo e experimente o exemplo! Abra o Editor de Código ao aceder a Automatizar>a Criação de Novo Script>no Editor de Código, substitua o código predefinido pelo código de exemplo que pretende executar e, em seguida, selecione Executar.

async function main(workbook: ExcelScript.Workbook) {
  // Call the GitHub REST API.
  // Replace the {USERNAME} placeholder with your GitHub username.
  const response = await fetch('https://api.github.com/users/{USERNAME}/repos');
  const repos: Repository[] = await response.json();

  // Create an array to hold the returned values.
  const rows: (string | boolean | number)[][] = [];

  // Convert each repository block into a row.
  for (let repo of repos) {
    rows.push([repo.id, repo.name, repo.license?.name, repo.license?.url]);
  }
  // Create a header row.
  const sheet = workbook.getActiveWorksheet();
  sheet.getRange('A1:D1').setValues([["ID", "Name", "License Name", "License URL"]]);

  // Add the data to the current worksheet, starting at "A2".
  const range = sheet.getRange('A2').getResizedRange(rows.length - 1, rows[0].length - 1);
  range.setValues(rows);
}

// An interface matching the returned JSON for a GitHub repository.
interface Repository {
  name: string,
  id: string,
  license?: License
}

// An interface matching the returned JSON for a GitHub repo license.
interface License {
  name: string,
  url: string
}

Vídeo de formação: Como fazer chamadas à API externa

Veja Sudhi Ramamurthy a percorrer este exemplo no YouTube.