nex*_*tor 16 python google-spreadsheet-api google-sheets-api
我试图在谷歌官方文档之后阅读和编写python 3中不同表单的值.虽然我能够使用rangeName = 'Class Data!A2:E'下面提到的代码块中的range属性读取某些工作表中的值:
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
'version=v4')
service = discovery.build('sheets', 'v4', http=http,
discoveryServiceUrl=discoveryUrl)
spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
rangeName = 'Class Data!A2:E'
result = service.spreadsheets().values().get(
spreadsheetId=spreadsheetId, range=rangeName).execute()
values = result.get('values', [])
Run Code Online (Sandbox Code Playgroud)
requests.append({
'updateCells': {
'start': {'sheetId': 0, 'rowIndex': 0, 'columnIndex': 0},
'rows': [
{
'values': [
{
'userEnteredValue': {'numberValue': 1},
'userEnteredFormat': {'backgroundColor': {'red': 1}}
}, {
'userEnteredValue': {'numberValue': 2},
'userEnteredFormat': {'backgroundColor': {'blue': 1}}
}, {
'userEnteredValue': {'numberValue': 3},
'userEnteredFormat': {'backgroundColor': {'green': 1}}
}
]
}
],
'fields': 'userEnteredValue,userEnteredFormat.backgroundColor'
}
})
batchUpdateRequest = {'requests': requests}
service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id,
body=batchUpdateRequest).execute()
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,我无法保留官方文档中的最新工作表名称或ID,并且最新的api修订版正在制作随机gid(我们可能不知道工作表gid会是什么).有没有办法使用google sheet api v4引用表单或电子表格最新修订的表单名称或ID?
use*_*017 38
您可以使用电子表格中的"获取"方法获取工作表列表:
sheet_metadata = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute()
sheets = sheet_metadata.get('sheets', '')
title = sheets[0].get("properties", {}).get("title", "Sheet1")
sheet_id = sheets[0].get("properties", {}).get("sheetId", 0)
Run Code Online (Sandbox Code Playgroud)
小智 12
对于那些寻找 nodejs 解决方案的人:
const { google } = require("googleapis")
// Assuming auth has already been generated
const getSheets = async (auth, spreadsheetId) => {
const sheets = google.sheets({version: "v4", auth});
const result = (await sheets.spreadsheets.get({
spreadsheetId
})).data.sheets.map((sheet) => {
return sheet.properties.title
})
return result
}
Run Code Online (Sandbox Code Playgroud)
这就是返回的内容await sheets.spreadsheets.get({ spreadsheetId })
然后,使用这种类型,我映射结果data.sheets并返回所有标题。
看起来它按照标题在实际谷歌表上的顺序返回标题。
如果您正在尝试生成身份验证令牌,请查看此处
WOU*_*nes 11
目前还没有人在PHP上询问过这个问题,但我只是想在这里添加这个答案,因为这是相关问题的第一个Google结果.
<?php
$sheets = array();
// ... load library and set up client ...
$service = new Google_Service_Sheets($client);
$response = $service->spreadsheets->get($spreadsheetId);
foreach($response->getSheets() as $s) {
$sheets[] = $s['properties']['title'];
}
return $sheets;
?>
Run Code Online (Sandbox Code Playgroud)
小智 10
对于蟒蛇来说。
service = build('sheets', 'v4', credentials=creds)
sheet_metadata = service.spreadsheets().get(spreadsheetId=SHEET_ID).execute()
properties = sheet_metadata.get('sheets')
for item in properties:
if item.get("properties").get('title') == 'SHEET_TITILE':
sheet_id = (item.get("properties").get('sheetId'))
print (sheet_id)
Run Code Online (Sandbox Code Playgroud)