O Google é uma grande empresa com um grande número de aplicativos que você pode acessar por APIs . Para alavancar e duplicar o poder de cada um desses produtos, você pode conectá-los e criar algo maior ! No entanto, não é tão simples : cada produto está bem documentado, mas a parte de autenticação para conectá-los está embaçada, desatualizada ou ausente.
Felizmente, quando você deseja conectar os produtos do Google Workspace e as APIs do Google Cloud, é muito fácil com métodos prontos para uso .
Ao usar o App Script, você tem um único método para chamar para gerar um token de acesso (token OAuth)
ScriptApp.getOAuthToken();
Não, não é tão simples... Experimente um código simples. Vamos parahttps://script.google.com/e iniciar um novo projeto
Copie este código em sua função
function myFunction() {
var options = {
'method' : 'get',
'headers': {"Authorization":"Bearer "+ScriptApp.getOAuthToken()},
}
var response = UrlFetchApp.fetch("https://cloudresourcemanager.googleapis.com/v1/projects/<PROJECT_ID>",options);
Logger.log(response.getContentText());
}
Salve e execute seu código. Aceite as permissões e você deverá receber um erro 403, devido a escopos insuficientes .
Obviamente sim, você está em um produto App Script e solicita uma API em outro produto , com outro escopo. Você precisa adicionar o escopo do Cloud Platform ao seu aplicativo.
Para isso, acesse Project Settingse clique na caixaShow "appscript.json" manifest file in editor
Volte para o editor e um novo arquivo está presente
Abra-o e adicione o escopo do Cloud Platform nele. Seu arquivo deve ficar assim
{
"timeZone": "Europe/Paris",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
Desta vez, você não tem o escopo de permissão para executar o script no App Script, você tem apenas o escopo do Cloud Platform, não o padrão do App Script.
Então, adicione-o aos escopos assim
{
"timeZone": "Europe/Paris",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/script.external_request"
]
}
Número do projeto que você não conhece, claro, não é “tão” simples!
Nos bastidores, o App Script cria um projeto para você , sem nenhuma API do Google Cloud ativada, porque não é um projeto do Google Cloud . Portanto, você precisa definir seu projeto na configuração do App Script.
Para isso, volte para a página de configuração e clique emChange Project
E preencha o campo com o número do projeto (não o ID do projeto. Você pode encontrá-lo na seção inicial do Google Cloud Console)
Volte ao seu script e execute-o.
BOOM, isso funciona!!
Ótimo, agora podemos chamar as APIs do Google Cloud com um token de acesso .
Vamos chamar os serviços do Cloud Run para criar interação entre meus aplicativos de espaço de trabalho e back-ends personalizados dinâmicos .
Ao contrário das APIs do Google Cloud que exigem um token de acesso, os serviços do Cloud Run exigem um token de identidade (JWT) para poder autenticar e autorizar o solicitante.
É o mesmo para o Cloud Functions implantado com segurança; e para App Engine protegido com IAP
Portanto, não se preocupe, podemos usar as funções internas do App Script
ScriptApp.getIdentityToken()
A maneira mais fácil é usar uma conta de serviço.
E CLARO QUE NÃO UM ARQUIVO DE CHAVE DE CONTA DE SERVIÇO!!
Proteger um arquivo em um documento do App Script parece difícil e é uma prática ruim usar o arquivo de chave da conta de serviço, quando podemos evitá-lo. Faremos diferente.
Já descrevi uma API pouco conhecida neste artigo : API de credenciais de conta de serviço
E vamos reutilizá-la! Nós precisamos
--no-allow-unauthenticated)var options = {
'method' : 'post',
'headers': {"Authorization":"Bearer "+ScriptApp.getOAuthToken()},
'contentType': 'application/json',
'payload': '{"includeEmail":true,
"audience": "AUDIENCE"}'
}
var response = UrlFetchApp.fetch("https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/<SERVICE_ACCOUNT_EMAIL>:generateIdToken",options)
Logger.log(JSON.parse(response.getContentText()).token);
Esta parte imprime o token de identidade. Agora, você precisa chamar seu serviço do Cloud Run com esse token de identidade no cabeçalho de autorização
var options = {
'method' : 'get',
'headers': {"Authorization":"Bearer " +
JSON.parse(response.getContentText()).token},
}
var response = UrlFetchApp.fetch("<CLOUD_RUN_URL>",options);
Logger.log(response.getContentText());
Por fim, a comunicação entre os produtos não é tão simples , mas a lógica e o mecanismo de autenticação são consistentes entre todos os produtos. Você precisa usar o tipo correto de token e usar os escopos corretos . Nada é mágico, e “tão simples”.
Espero que este artigo simplifique sua solução de vários produtos do Google e permita que você crie incríveis aplicativos de espaço de trabalho de baixo código e integração com o Google Cloud!
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.
Por Alyson Lee, consultor administrativo de assuntos governamentais O processo de apropriações anuais do governo federal é fundamental para nossos esforços para financiar a remoção de dióxido de carbono (CDR). Todos os anos, a Carbon180 envia solicitações a vários escritórios do Congresso para ajudar a orientar para onde os dólares do próximo ano irão fluir.
Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.
O que é velho agora é novo de novo e o que costumava ser a coisa brilhante e brilhante agora parece opaco. Não estou falando de jeans JNCO fazendo um retorno entre os garotos legais do centro da cidade junto com outras modas do final dos anos 1990.
[Alerta de gatilho: este ensaio inclui capturas de tela de pessoas elogiando o assassino de Jordan Neely.] Os policiais finalmente - e talvez com relutância - acusaram Daniel Penny, o homem que sufocou Jordan Neely até a morte, por aquele homicídio.