【问题标题】:Sheets API formatting header表格 API 格式标题
【发布时间】:2020-06-10 09:55:15
【问题描述】:

我正在使用 firebase 云功能在现有电子表格中添加和编辑数据。

我对工作表执行的第一个操作是添加包含列名称的第一行。 之后,我将第一个插入行的格式更改为粗体。 这成功了,但随后,我附加到工作表的每一行数据也显示为粗体。

这是我的代码的 sn-p:

header = [/* array of the columns names */];

 await appendPromise({
        spreadsheetId: spreadsheetID,
        range: 'Sheet1',
        valueInputOption: 'USER_ENTERED',
        insertDataOption: 'INSERT_ROWS',
        resource: {
          values: [header],
        },
      });
      
      
 return updateBatchPromise(spreadsheetID,
     {"requests": [
    {"repeatCell": {
        "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1
        },
        "cell": {
            "userEnteredFormat": {
                "textFormat": {
                    "bold": true
                }
            }
        },
        "fields": "userEnteredFormat.textFormat.bold"
    }}
]}
      )



/*...... HELPER FUNCTIONS........*/

function appendPromise(requestWithoutAuth) {
  return new Promise((resolve, reject) => {
    google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/spreadsheets'],
  }).then((client) => {
      const sheets = google.sheets('v4');
      const request = requestWithoutAuth;
      request.auth = client;
      return sheets.spreadsheets.values.append(request, (err, response) => {
        if (err) {
          console.log(`The API returned an error: ${err}`);
          return reject(err);
        }
        return resolve(response.data);
      });
    });
  });
}



function updateBatchPromise(spreadsheetId, res) {
  return new Promise((resolve, reject) => {
    google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/spreadsheets'],
  }).then((client) => {
      const sheets = google.sheets('v4');
      return sheets.spreadsheets.batchUpdate({
  auth: client,
  spreadsheetId: spreadsheetId,
  resource: res
}, (err, response) => {
        if (err) {
          console.log(`The API returned an error: ${err}`);
          return reject(err);
        }
        return resolve(response.data);
      });
    });
  });
}

第一张图片是请求的行为,第二张是我得到的。

【问题讨论】:

    标签: javascript google-sheets-api


    【解决方案1】:

    答案:

    在您附加第一行数据后,您需要指定工作表的其余部分不应为粗体。

    更多信息:

    当您将数据附加到电子表格时,新附加的数据采用与其上方行相同的格式 - 您可以将其视为将数据复制到具有上方行属性的新行中,而不是而不是更新行并使用已设置的文本格式。

    您可以通过添加一个额外的批处理请求来解决此问题,该请求指定其他行不应为粗体。

    这是通过省略 endRowIndex 选项并将 startRowIndex 设置为 1 来完成的。:

    {
      "requests": [
        {
          "repeatCell": {
            "range": {
              "sheetId": 0,
              "startRowIndex": 1
            },
            "cell": {
              "userEnteredFormat": {
                "textFormat": {
                  "bold": false
                }
              }
            },
            "fields": "userEnteredFormat.textFormat.bold"
          }
        }
      ]
    }
    

    但是,此操作必须在添加第一行之后完成,否则该行将继续从第一行复制粗体格式。

    请求的顺序应该如下:

    • spreadsheets.batchUpdate 请求将第一行加粗
    • spreadsheets.values.append 请求添加标题
    • spreadsheets.values.append请求添加第一组数据
    • spreadsheets.batchUpdate 请求更新第 2 行及以下的行,以免复制粗体文本格式。

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多