【问题标题】:How to merge cells with Google Sheets API?如何将单元格与 Google Sheets API 合并?
【发布时间】:2017-04-19 14:03:41
【问题描述】:

我正在使用 Google Sheets API 的 Python 客户端来构建电子表格。我能够创建一个新工作表并更新其中的值,但我无法合并我想要的标题行的单元格。

top_header_format = [
    {'mergeCells': {
        'mergeType': 'MERGE_COLUMNS',
        'range': {
            'endColumnIndex': 3,
            'endRowIndex': 1,
            'sheetId': '112501875',
            'startColumnIndex': 0,
            'startRowIndex': 0
        }
    }},
    {'mergeCells': {
        'mergeType': 'MERGE_COLUMNS',
         'range': {
             'endColumnIndex': 5,
             'endRowIndex': 1,
             'sheetId': '112501875',
             'startColumnIndex': 3,
             'startRowIndex': 0
         }
    }}
]

service.spreadsheets().batchUpdate(
    spreadsheetId=spreadsheet_id,
    body={'requests': top_header_format}
).execute()

这是我正在运行的代码。没有错误。响应的回复是空的,并且电子表格没有合并的单元格。文档是here

【问题讨论】:

    标签: google-sheets-api google-python-api


    【解决方案1】:

    起始索引是包容性的,结束索引是排斥性的,所以通过要求合并行 [0,1),您是在说“我想将第 0 行合并到第 0 行”,这是一个无操作。你可能想要 [0,2),例如:

    top_header_format = [
        {'mergeCells': {
            'mergeType': 'MERGE_COLUMNS',
            'range': {
                'endColumnIndex': 4,
                'endRowIndex': 2,
                'sheetId': '112501875',
                'startColumnIndex': 0,
                'startRowIndex': 0
            }
        }},
        {'mergeCells': {
            'mergeType': 'MERGE_COLUMNS',
             'range': {
                 'endColumnIndex': 6,
                 'endRowIndex': 2,
                 'sheetId': '112501875',
                 'startColumnIndex': 3,
                 'startRowIndex': 0
             }
        }}
    ]
    

    【讨论】:

    • (虽然,现在我回过头来,你说的是 MERGE_COLUMNS ......所以指定单行应该不是问题,因为你已经有多个列。所以我的回答可能没有意义. 让我检查并返回。)
    • 好的,上面的答案是正确的。枚举名称总是让我感到困惑。 MERGE_COLUMNS 被记录为“为范围内的每一列创建一个合并”——这意味着行被合并在一起。由于您只指定了 MERGE_COLUMNS 一行,因此没有要合并在一起的行。您可以指定 MERGE_ALL 或 MERGE_ROWS 来查看与您之前的索引合并的内容。
    • 谢谢。问题是我也对枚举感到困惑。我现在按预期工作了。
    【解决方案2】:

    如果有人想与 PHP 进行合并,您可以使用以下代码:

    首先要合并单元格,您必须从 composer 下载 PHP 库,如他们的文档中所示 (https://developers.google.com/sheets/api/quickstart/php) 安装后,请按照他们的指南设置您的客户端以进行身份​​验证。

        //$client will be your Google_Client authentication, for more info check the documentation link above.
    

    使用下面的代码来合并行和列

        $service = new Google_Service_Sheets($client);
    
        $spreadsheetId = '1jfUz2VMUUEt2s4BP2Ye';    //this is test spreadsheet it, use your spreadsheet id here
    
        $rangeinst = new Google_Service_Sheets_GridRange();
        $rangeinst->setSheetId(0);  //your sheet id
        $rangeinst->setStartRowIndex(1);    // row index from where to start
        $rangeinst->setEndRowIndex(11); //ending row upto which you want merging
        $rangeinst->setStartColumnIndex(0); //start of column index, first column has 0 index like row
        $rangeinst->setEndColumnIndex(4);   //end of column upto which you want merging
        $merge = new Google_Service_Sheets_MergeCellsRequest();
        $merge->setMergeType('MERGE_COLUMNS');  //merge type request
        $merge->setRange($rangeinst);
    
        $requestBody = new Google_Service_Sheets_Request();
        $requestBody->setMergeCells($merge);
        $requestBatchBody = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest();
        $requestBatchBody->setRequests($requestBody);
    
    
        $response = $service->spreadsheets->batchUpdate($spreadsheetId, $requestBatchBody);
        echo "<pre>";
        print_r($response);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多