Google Sheets API 使用介绍

2,670 阅读1分钟

0. 背景

通过Google Sheets APi,实现自动化更新sheets内容;

1. 创建Sheets账号

访问【Google Cloud Console】

1.1 创建新项目 image.png

1.2 APIs & Services image.png

点击启动 Enable APIs and Services image.png

1.3 搜索 Google Sheets API, 并启用 image.png

1.4 创建一个Service 账号 image.png

image.png

1.5 添加密钥,用于auth image.png

image.png

1.6 将申请的Service 账号,配置到对应的sheets表

image.png

至此,我们就创建好一个账号,用于脚本自动更新文档内容!

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
                        },
                    ],
                },
            },
        ],
    },
});

参考文档

【如何使用 Google Sheets API 创建反馈表】