我一直在使用Python中的Google API来创建一个以Google Sheet为其父级的应用程序脚本。在应用程序脚本中,我正在将数据写入父工作表。然而,当我尝试使用API部署应用程序脚本时,我总是收到错误“找不到请求的实体”
我注意到,当我从web界面手动部署应用程序脚本时,我首先需要授予该脚本OAuth访问Google Sheets的权限。授予权限后,我也可以从API代码成功部署脚本。
# Import required libraries
from googleapiclient.discovery import build
from google.oauth2 import service_account
# Define your credentials
credentials = service_account.Credentials.from_service_account_file('path/to/credentials.json')
scopes = ['https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/script.projects',
'https://www.googleapis.com/auth/script.deployments'
]
# Build the API service
service = build('script', 'v1', credentials=credentials)
def create_script(sheet_id):
# Create a new Apps Script project
request = service.projects().create(
body={
'title': 'My App Script',
'parentId': sheet_id
}
)
response = request.execute()
script_id = response['scriptId']
script_code= '''function addRowToSheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var newRowData = ['Value 1', 'Value 2', 'Value 3'];
sheet.appendRow(newRowData);
}'''
request = {
'files': [
{
'name': 'Code',
'type': 'SERVER_JS',
'source': script_code
},
{
'name': 'appsscript',
'type': 'JSON',
'source': {}.strip()
}
]
}
create_file_request = service.projects().updateContent(
scriptId=script_id,
body=request
).execute()
return script_id
def deploy_script(script_id ):
# Deploy the Apps Script
request = service.projects().deployments().create(
scriptId=script_id , # Replace with the ID of your Apps Script
body={
'scriptId': script_id,
'versionNumber': 1,
'manifestFileName': 'appsscript'
}
)
response = request.execute()
deployment_id = response['deploymentId']
我的问题是,如何直接从API代码授予所需的OAuth权限?我可以访问具有必要权限的令牌,或者,我如何提示用户使用他们的谷歌帐户进行身份验证以授予项目权限?
如有任何帮助或指导,我们将不胜感激。非常感谢。