В вашей ситуации есть 2 шаблона.
Шаблон 1:
Использование сценария авторизации при быстром запуске .
Пример сценария:
from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
def main():
# Setup the Apps Script API
SCOPES = ['https://www.googleapis.com/auth/script.projects', 'https://www.googleapis.com/auth/drive']
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'client_secret.json', SCOPES)
creds = flow.run_local_server()
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('script', 'v1', credentials=creds)
scriptId = "### script ID ###" # Please set this
request = {"function": "myFunction", "parameters": ["sample"], "devMode": True}
response = service.scripts().run(body=request, scriptId=scriptId).execute()
print(response)
if __name__ == '__main__':
main()
Шаблон 2:
Если вы хотите использовать скрипт в своем вопросе, пожалуйста, измените ваш скрипт следующим образом.Это обсуждается в здесь и здесь .
Пример сценария:
from __future__ import print_function
from googleapiclient.discovery import build
from oauth2client import file as oauth_file, client, tools
def main():
SCOPES = ['https://www.googleapis.com/auth/script.projects', 'https://www.googleapis.com/auth/drive']
store = oauth_file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('script', 'v1', credentials=creds)
scriptId = "### script ID ###" # Please set this
request = {"function": "myFunction", "parameters": ["sample"], "devMode": True}
response = service.scripts().run(body=request, scriptId=scriptId).execute()
print(response)
if __name__ == '__main__':
main()
Пример сценария стороны GAS:
function myFunction(e) {
return "ok: " + e;
}
Результат:
Вы можете получить следующий ответ сверху обоих сценариев.
{
"response": {
"@type": "type.googleapis.com/google.apps.script.v1.ExecutionResponse",
"result": "ok: sample"
},
"done": True
}
Примечание:
- Перед использованием вышеуказанных сценариев, пожалуйста, настройтеза его использование.Вы можете увидеть официальный документ ниже.
В моем окружении я могу подтвердить, что вышеупомянутые шаблоны могут быть использованы.Но если в вашей среде они не использовались, я прошу прощения.