如何在现有SpreadSheet中添加新表格?带有Node.js的Google Sheets API

UFC*_*der 4 node.js google-sheets-api

使用Google-Sheets-API for Node.js,如何以编程方式在现有电子表格中添加/创建新表格?

在此处输入图片说明

Sah*_*Avr 6

实际上是可行的,并记录在Spreadsheets / batchUpdate / Requests#AddSheetRequest下

authorize(JSON.parse(clientSecretContent), (auth) => {
    const sheets = google.sheets({ version: 'v4', auth });
    const request = {
        // The ID of the spreadsheet
        "spreadsheetId": spreadsheetId,
        "resource": {
            "requests": [{
               "addSheet": {
                    // Add properties for the new sheet
                    "properties": {
                        // "sheetId": number,
                        // "title": string,
                        // "index": number,
                        // "sheetType": enum(SheetType),
                        // "gridProperties": {
                        //     object(GridProperties)
                        // },
                        // "hidden": boolean,
                        // "tabColor": {
                        //     object(Color)
                        // },
                        // "rightToLeft": boolean
                    }
                }
            ]}
        }
    };

    sheets.spreadsheets.batchUpdate(request, (err, response) => {
        if (err) {
            // TODO: Handle error
        } else {
            // TODO: Handle success
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


has*_*ock 6

为了后代的利益,这里有一个基于承诺(异步/等待)的 Sheets API 示例,说明如何将工作表(选项卡)添加到电子表格。

await api.spreadsheets.batchUpdate ({ 
          spreadsheetId: spreadsheetId, 
          resource: {requests: [ {addSheet: {properties: {title: tabName }}}]}});
Run Code Online (Sandbox Code Playgroud)

一个完整的例子

async function addSheet (auth, spreadsheetId, tabName) {
    const api = google.sheets({version: 'v4', auth: auth});
    try {
      // Only add sheet if it doesn't already exist
      if ((await api.spreadsheets.get({spreadsheetId: spreadsheetId})).data.sheets
        .filter(sheet => sheet.properties.title === tabName).length === 0) {
        await api.spreadsheets.batchUpdate ({ 
          spreadsheetId: spreadsheetId, 
          resource: {requests: [ {addSheet: {properties: {title: tabName }}}]}});
      }
    } catch (err) {
      console.log('Sheets API Error: ' + err);
    }
}
Run Code Online (Sandbox Code Playgroud)