【问题标题】:Google sheets api not able to set default formatGoogle 表格 API 无法设置默认格式
【发布时间】:2020-03-05 14:36:42
【问题描述】:

根据https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#SpreadsheetProperties,我应该能够在创建 Google 工作表时设置defaultFormat,以便在添加数据后不必将其应用于所有单元格。

虽然它没有做任何事情。我知道verticalAlignment 存在,因为如果我打错字,它会抱怨缺少该属性。

可能是什么问题?

return new Promise((resolve, reject) => {
    const sheets = google.sheets({version: 'v4', auth});
    const request = {
        resource: {
          properties: {
            title: "This is the sheet title",
            defaultFormat: {
              "verticalAlignment": "TOP"
            }
          },
          sheets: [
            {
              properties: {
                title: "The first tab"
              }
            }
          ]
        },
        auth: auth,
    };
    sheets.spreadsheets.create(request, (err, response) => {
        if (err) {
            return reject(err);
        }
        resolve(response);
    });
});

【问题讨论】:

    标签: node.js google-sheets google-sheets-api


    【解决方案1】:
    • 您想使用 Sheets API 创建带有{"defaultFormat": {"verticalAlignment": "TOP"}} 的新电子表格。
    • 您希望使用带有 Node.js 的 googleapis 来实现此目的。
    • 您已经能够使用 Sheets API 获取和放置电子表格的值。

    如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

    问题和解决方法:

    我认为您的问题的原因可能是电子表格属性中的defaultFormatThis field is read-only.Ref

    要使用{"verticalAlignment": "TOP"} 创建新的电子表格,以下变通方法如何?

    模式一:

    在此模式中,"verticalAlignment": "TOP" 用于使用“创建”方法的工作表。在这种情况下,每个单元格都需要设置为{ userEnteredFormat: { verticalAlignment: "TOP" } },如下所示。

    修改脚本:

    return new Promise((resolve, reject) => {
      const sheets = google.sheets({ version: "v4", auth });
      let rowData = [];
      for (let r = 0; r < 1000; r++) {
        let row = [];
        for (let c = 0; c < 26; c++) {
          row[c] = { userEnteredFormat: { verticalAlignment: "TOP" } };
        }
        rowData.push({ values: row });
      }
      const request = {
        resource: {
          properties: { title: "This is the sheet title" },
          sheets: [
            {
              properties: { title: "The first tab" },
              data: { rowData: rowData }
            }
          ]
        }
      };
      sheets.spreadsheets.create(request, (err, response) => {
        if (err) {
          return reject(err);
        }
        resolve(response.data);
      });
    });
    
    • 在这种情况下,默认工作表有 1,000 行和 26 列。所以我在上面使用了 for 循环。

    模式 2:

    在此模式中,首先创建新的电子表格,然后通过“batchUpdate”方法给出"verticalAlignment": "TOP"

    修改脚本:

    return new Promise((resolve, reject) => {
      const sheets = google.sheets({ version: "v4", auth });
      const request = {
        resource: {
          properties: { title: "This is the sheet title" },
          sheets: [{ properties: { title: "The first tab" } }]
        }
      };
      sheets.spreadsheets.create(request, (err, response) => {
        if (err) {
          return reject(err);
        }
        sheets.spreadsheets.batchUpdate(
          {
            spreadsheetId: response.data.spreadsheetId,
            resource: {
              requests: [
                {
                  repeatCell: {
                    range: {
                      sheetId: response.data.sheets[0].properties.sheetId
                    },
                    cell: {
                      userEnteredFormat: {
                        verticalAlignment: "TOP"
                      }
                    },
                    fields: "userEnteredFormat.verticalAlignment"
                  }
                }
              ]
            }
          },
          function(err, response) {
            if (err) {
              return reject(err);
            }
            resolve(response.data);
          }
        );
      });
    });
    

    参考资料:

    如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    【讨论】:

    • 你是正确的。我已经阅读了很多次文档,但我仍然错过了只读的。谢谢你,它解释了为什么它不起作用。我也会为此使用批量更新方法。逐个单元格不是一种选择。再次感谢
    • @Asken 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2014-07-07
    • 2017-11-21
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多