Мы ищем способ вызвать функцию в надстройке в контексте пользователя (авторизация) из нашего веб-приложения. Мы попытались использовать Apps Script Execution API, чтобы вызвать это. Надстройка потока (скрипт приложения) регистрирует токен доступа в нашем веб-приложении, и веб-приложение запускает API выполнения, используя токен доступа. Это работает впервые. Но проблема в том, что токен доступа действителен всего несколько минут. После чего веб-приложение не может инициировать функцию через API выполнения из-за сбоя авторизации.
Вопросы:
Является ли наш подход к запуску функции сценария надстройки/приложения из другого веб-приложения в контексте пользователя правильным с помощью API выполнения?
Если да, то как избежать истечения срока действия токена доступа? По-видимому, в скрипте приложений нет API для «получения токена обновления» / «обновления токена». Как мы можем обновить токен, чтобы он был действителен вечно (пока пользователь не отменит его)?
Есть ли какой-то кардинально другой подход, который поможет в этом случае?
Я вижу, что надстройки, такие как «PearDeck», «Утверждение форм», «Издатель форм» и т. д., успешно делают это (запуская функцию надстройки из веб-приложения с авторизацией пользователя).
Надеюсь получить совет специалиста на этом форуме. Спасибо
Используемый Execution API - с проблемой истечения срока действия токена
function prepareToken() {
// send to web app
var token = ScriptApp.getOAuthToken();
URLFetchApp.fetch("url?token="+token);
}
function doSomeWorkFromUserContext() {
// impl here
}
POST https://script.googleapis.com/v1/scripts/{scriptId}:run
Request Header
Authorization: Bearer + {token}
Request Body
{
"function": "doSomeWorkFromUserContext"
}
Функция doSomeWorkFromUserContext должна вызываться все время вызова, но через некоторое время получать ошибку авторизации.