在 Google 电子表格 (ruby api) 中更新工作表 修改后的脚本:注意:参考:

问题描述

我想出了一种将新工作表添加到现有电子表格的方法,但我似乎不知道如何设置添加的工作表的格式。

例如,我可以使用以下方法为电子表格中的第一个工作表(即认工作表)的标题行着色:

  def color_header_row(file)
    spreadsheet_id = file.id
    requests = {
      requests: [
        {
          repeat_cell: {
            range: {
              sheet_id: 0,start_row_index: 0,end_row_index: 1
            },cell: {
              user_entered_format: {
                background_color: { red: 0.0,green: 0.4,blue: 0.0 },horizontal_alignment: "CENTER",text_format: {
                  foreground_color: {
                    red: 1.0,green: 1.0,blue: 1.0
                  },font_size: 12,bold: true
                }
              }
            },fields: 'userEnteredFormat(backgroundColor,textformat,horizontalAlignment)'
          },}
      ]
    }
    sheet_service.batch_update_spreadsheet(spreadsheet_id,requests,{})
  end

请注意,认工作表 sheet_id 为 0 因此我的假设(鉴于 GridRange 在 documentation 中的定义方式)是将 sheet_id 设置为 1 将导致对新添加的引用工作表(实质上是位置 1 的工作表)。但是,当 sheet_id 设置为 1 时,会返回错误 Invalid request(Google::Apis::ClientError)

关于如何格式化非认(即不在电子表格中的第一个位置的工作表)工作表的标题行的任何想法?

解决方法

我相信你的目标和你目前的情况如下。

  • 您想对 Google 电子表格中的工作表使用 repeat_cell,但工作表 ID 0 除外。
  • 您想使用 googleapis for ruby​​ 来实现这一点。
  • 您已经能够使用 Sheets API 获取和放置电子表格的值。

在这种情况下,如何通过电子表格.get的方法使用工作表名称检索工作表ID?在电子表格中,不能使用相同的工作表名称。所以,在这种情况下,我认为这个方向可能对你的情况有用。当这反映到您的脚本中时,它会变成如下所示。

修改后的脚本:

在此脚本中,工作表 ID 是使用工作表名称“Sheet2”检索的,检索到的工作表 ID 用于 repeat_cell 请求。

sheet_name = 'Sheet2' # Please set the sheet name.

spreadsheet_id = file.id
response = sheet_service.get_spreadsheet(spreadsheet_id,ranges: [sheet_name],fields: 'sheets(properties)')
sheet_id = response.sheets[0].properties.sheet_id

requests = {
  requests: [
    {
      repeat_cell: {
        range: {
          sheet_id: sheet_id,start_row_index: 0,end_row_index: 1
        },cell: {
          user_entered_format: {
            background_color: { red: 0.0,green: 0.4,blue: 0.0 },horizontal_alignment: "CENTER",text_format: {
              foreground_color: {
                red: 1.0,green: 1.0,blue: 1.0
              },font_size: 12,bold: true
            }
          }
        },fields: 'userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)'
      },}
  ]
}
sheet_service.batch_update_spreadsheet(spreadsheet_id,requests,{})

注意:

  • 如果您想使用工作表索引检索工作表 ID(例如,第一张和第二张工作表分别为 01。),您还可以使用以下命令脚本。

      sheet_index = 1
      response = sheet_service.get_spreadsheet(spreadsheet_id,fields: 'sheets(properties)')
      sheet_id = response.sheets[sheet_index].properties.sheet_id
    

参考: