GAS - Autenticação com UrlFetchApp - Formulário para planilha
Estou testando a funcionalidade do UrlFetchApp e passando dados de um formulário e sua planilha. Eu sei que é possível fazer isso de outra maneira, no entanto, estou testando a funcionalidade do UrlFetchApp (primeira vez em que é usada) nos próprios scripts do Google e quero que ele funcione com esse método.
Aqui está o cenário que obtive, adicione um script vinculado a um aplicativo de formulário da seguinte maneira:
function makeRequest()
{
var webAppUrl = "https://script.google.com/macros/s/WebAppID/exec";
var auth = ScriptApp.getOAuthToken();
var header = { 'Authorization': 'Bearer ' + auth };
var options = { 'method':'post', 'headers':header };
var resp = UrlFetchApp.fetch(webAppUrl, options);
Logger.log(resp);
}
Adicione um script vinculado à planilha anexada:
function doPost()
{
var ss = SpreadsheetApp.openById('ssID');
var name = ss.getName();
return ContentService.createTextOutput(name);
}
E, em seguida, publique esse segundo script anexado à planilha como um aplicativo da Web, apenas para ter acesso.
Atualmente, o código acima não funciona. O seguinte erro aparece no lado do formulário do script:
A solicitação falhou parahttps://script.google.com/macros/s/WebAppID/exec retornou o código 401. Resposta do servidor truncada: Não autorizado
Não autorizadoErro 401(use a opção muteHttpExceptions para examinar a resposta completa) (linha 12, arquivo "Código")Falha na linha de código UrlFetchApp.
No entanto, se eu remover a opção de cabeçalho e publicar o aplicativo Web para uso público, isso funcionará perfeitamente. Obviamente, isso não é desejado.
O que estou perdendo em relação à autenticação entre scripts que possuo?
Notas laterais:
Alguém sabe por que SpreadsheetApp.getActiveSheet () não funciona quando executado dessa maneira? Esse script está diretamente vinculado a uma planilha do Google, tão estranho.