- Вы хотите использовать API сценариев приложений с учетной записью службы.
- Вы хотите добиться этого с помощью скрипта Служб Google.
Если мое понимание верно, как об этом ответе? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
К сожалению, на данном этапе метод scripts.run в Apps Script API не может использоваться с Сервисный аккаунт. Официальный документ гласит следующее. Об этом, когда я проверял это, я мог подтвердить, что метод scripts.run в Apps Script API не может использоваться с учетной записью службы.
Предупреждение: API скриптов Apps не работает с учетные записи служб.
Ситуация, описанная выше, как обходной путь, как насчет использования токена доступа, полученного OAuth2? Чтобы использовать API сценариев приложений с OAuth2, необходимо связать проект облачной платформы с проектом сценариев Google Apps. Об этом вы можете увидеть поток для их связи на здесь .
Примечание:
Ссылки:
Если это не то направление, которое вы хотите, я приношу свои извинения.
Добавлено:
- Вы хотите, чтобы несколько пользователей запускали скрипт как владелец, которым вы являетесь.
Начиная с вашего ответа , я мог бы понять, как описано выше. Когда Apps Script API используется для вышеуказанной ситуации, учетные данные требуются для предоставления каждому пользователю. Когда каждый пользователь использует токен доступа, полученный из ваших учетных данных, ваша цель может быть достигнута. Но я не могу рекомендовать это. Поэтому в вашем случае я бы хотел использовать веб-приложения для достижения вашей цели. Поток выглядит следующим образом.
1. Подготовьте сценарий.
Пожалуйста, подготовьте сценарий. Например, на текущем этапе вы хотите, чтобы пользователи запускали функцию myFunction()
, поместите следующий пример сценария.
function doGet(e) {
var values = e; // When you want to give the values by requesting, you can use the event object like "e".
var res = myFunction(values);
return ContentService.createTextOutput(res);
}
- В этом случае используется метод GET. Если вы хотите запустить только функцию, вы можете использовать этот скрипт. Если вы хотите запустить функцию, предоставляя большие данные, вы можете использовать
doPost()
вместо doGet()
.
2. Развертывание веб-приложений.
- В редакторе сценариев откройте диалоговое окно с помощью «Publi sh» -> «Развернуть как веб-приложение».
- Выберите «Me " for " Запустите приложение как: ".
- При этом сценарий запускается от имени владельца.
- Здесь, если задано значение «Любой», сценарий запускается от имени каждого пользователя. В этом случае требуется предоставить общий доступ к сценарию каждому пользователю. И токен доступа требуется использовать. Пожалуйста, будьте осторожны.
- Выберите "Любой, даже анонимный" для "У кого есть доступ к приложению:" .
- В этом случае токен доступа не требуется запрашивать. Я думаю, что в качестве тестового примера я рекомендую этот параметр.
- Конечно, вы также можете использовать токен доступа. В это время установите «Anyone» .
- Нажмите кнопку «Развернуть» как новую «Project version».
- Автоматически открывать диалоговое окно «Требуется авторизация».
- Нажмите «Просмотреть разрешения».
- Выберите собственную учетную запись.
- Нажмите «Дополнительно» в разделе «Это приложение не подтверждено».
- Нажмите " Go to ### имя проекта ### (небезопасно) "
- Нажмите кнопку" Разрешить ".
- Нажмите" ОК ".
- Скопируйте URL-адрес веб-приложений. Это как
https://script.google.com/macros/s/###/exec
. - Когда вы изменили скрипт Google Apps, пожалуйста, повторно разверните его как новую версию. Этим измененный сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны с этим.
3. Запустите функцию с помощью веб-приложений.
Это пример команды curl для выполнения myFunction
с веб-приложениями. Пожалуйста, установите URL своего веб-приложения. При указанных выше настройках веб-приложений каждый пользователь может получить доступ с помощью следующей команды curl.
curl -GL \
-d "key=value" \
"https://script.google.com/macros/s/###/exec"
- Когда в качестве параметра запроса, как указано выше, используется
key=value
, в doGet(e)
вы можете получить value
с использованием e.parameter.key
.
Ссылки: