0. 背景
通过Google Sheets APi,实现自动化更新sheets内容;
1. 创建Sheets账号
1.1 创建新项目
1.2 APIs & Services
点击启动 Enable APIs and Services
1.3 搜索 Google Sheets API, 并启用
1.4 创建一个Service 账号
1.5 添加密钥,用于auth
1.6 将申请的Service 账号,配置到对应的sheets表
至此,我们就创建好一个账号,用于脚本自动更新文档内容!
2. 代码实现
我们可以通过 googleapis组件,方便我们接入! 这个是组件提供的demo
以下是实现参考
- 获取sheets实例
const { google } = require('googleapis');
// 相关rest接口源码:server/node_modules/gtoken/build/src/index.js
const auth = new google.auth.GoogleAuth({
credentials: sheetConfig,
scopes: [
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/spreadsheets',
],
});
const sheets = google.sheets({
auth,
version: 'v4'
});
URL本身找到电子表单 ID
https://docs.google.com/spreadsheets/d/{spreadsheetID}/edit#gid=0
- 创建文档sheet页
// batchUpdate https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request?hl=zh-cn#Request
const { data: newSheets } = await sheets.spreadsheets.batchUpdate({
spreadsheetId,
requestBody: {
requests: [
{
addSheet: {
properties: {
title: sheetName,
gridProperties: {
rowCount: 1000,
columnCount: 26,
},
},
},
},
],
},
});
- 更新数据
const response = await sheets.spreadsheets.values.append({
spreadsheetId, // 记得替换表格id
range: `${sheetName}${sheetRange}`,
valueInputOption: 'USER_ENTERED',
requestBody: {
values: newList,
},
});
- 自定义排序
await sheets.spreadsheets.batchUpdate({
spreadsheetId,
requestBody: {
requests: [
{
sortRange: {
range: {
sheetId: sheetsheetId, // 通过sheets.spreadsheets.get 获取
startRowIndex: 1, // 不包括标题行
// endRowIndex: 1000, // 如果无界限,则不设置
startColumnIndex: 0,
// endColumnIndex: 3, // 如果未设置界限,则不设置此参数
},
sortSpecs: [
{
dimensionIndex: 1, // 对时间进行排序,表里id是乱的
sortOrder: 'DESCENDING', // 降序:DESCENDING 生序 ASCENDING
},
],
},
},
],
},
});