Google Sheets API返回的JSON响应包含了电子表格中的数据及其元数据。当通过API请求获取Google Sheets数据时,服务器会返回一个结构化的JSON对象,其中包含工作表信息、单元格数据、格式设置等内容。
典型的Google Sheets API JSON响应包含以下主要部分:
// 假设response是从Google Sheets API获取的JSON响应
function parseGoogleSheetsResponse(response) {
const spreadsheetId = response.spreadsheetId;
const title = response.properties.title;
console.log(`处理电子表格: ${title} (ID: ${spreadsheetId})`);
// 遍历所有工作表
response.sheets.forEach(sheet => {
const sheetTitle = sheet.properties.title;
const sheetId = sheet.properties.sheetId;
console.log(`\n工作表: ${sheetTitle} (ID: ${sheetId})`);
// 检查是否有网格数据
if (sheet.data && sheet.data.length > 0) {
sheet.data.forEach(gridData => {
const startRow = gridData.startRow || 0;
const startColumn = gridData.startColumn || 0;
// 处理行数据
if (gridData.rowData) {
gridData.rowData.forEach((row, rowIndex) => {
if (row.values) {
const rowData = row.values.map(cell => {
return cell.formattedValue || '';
});
console.log(`行 ${startRow + rowIndex}:`, rowData);
}
});
}
});
}
});
}
// 使用示例
fetch('https://sheets.googleapis.com/v4/spreadsheets/YOUR_SPREADSHEET_ID')
.then(response => response.json())
.then(data => parseGoogleSheetsResponse(data))
.catch(error => console.error('获取数据失败:', error));
import json
import requests
def parse_google_sheets_response(response_json):
data = json.loads(response_json) if isinstance(response_json, str) else response_json
spreadsheet_id = data['spreadsheetId']
title = data['properties']['title']
print(f"处理电子表格: {title} (ID: {spreadsheet_id})")
for sheet in data['sheets']:
sheet_title = sheet['properties']['title']
sheet_id = sheet['properties']['sheetId']
print(f"\n工作表: {sheet_title} (ID: {sheet_id})")
if 'data' in sheet and sheet['data']:
for grid_data in sheet['data']:
start_row = grid_data.get('startRow', 0)
start_column = grid_data.get('startColumn', 0)
if 'rowData' in grid_data:
for row_index, row in enumerate(grid_data['rowData']):
if 'values' in row:
row_data = [
cell.get('formattedValue', '')
for cell in row['values']
]
print(f"行 {start_row + row_index}: {row_data}")
# 使用示例
response = requests.get(
'https://sheets.googleapis.com/v4/spreadsheets/YOUR_SPREADSHEET_ID',
headers={'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
)
parse_google_sheets_response(response.json())
原因: 可能没有请求正确的范围或工作表 解决: 确保在API请求中指定了正确的范围和字段掩码
// 示例: 请求特定工作表的A1:C3范围
fetch('https://sheets.googleapis.com/v4/spreadsheets/YOUR_SPREADSHEET_ID/values/Sheet1!A1:C3')
原因: 单元格可能为空或使用了不同的字段名称
解决: 检查formattedValue
和userEnteredValue
字段
原因: Google Sheets可能返回Excel序列日期 解决: 转换日期格式
function convertGoogleSheetsDate(serial) {
const utcDays = Math.floor(serial - 25569);
const utcValue = utcDays * 86400;
const date = new Date(utcValue * 1000);
return date;
}
原因: 一次性获取过多数据 解决: 分批获取数据或使用字段掩码只请求必要字段
// 只请求特定字段
fetch('https://sheets.googleapis.com/v4/spreadsheets/YOUR_SPREADSHEET_ID?fields=sheets.properties.title,sheets.data.rowData.values.formattedValue')
通过正确解析Google Sheets的JSON响应,您可以充分利用电子表格的灵活性和API的强大功能,构建各种数据驱动的应用程序。