You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google API批量将MySQL查询结果导入Google Sheets

批量导入MySQL数据到Google Sheets并添加分组标识行

需求说明:遍历MySQL查询结果,批量导入Google Sheets,当refnumber(即PONumber)变更时插入带背景色的标识行,替代原逐行添加的低效方式。

修改后的代码

$service = new \Google_Service_Sheets($client);
$spreadsheetId = 'xxxxxxxxxxx';
$spreadsheet = $service->spreadsheets->get($spreadsheetId);

$result = $db->query("SELECT * from pomasterview"); 
$oldref = '1';
$allRows = [];
$highlightRows = [];
$currentRow = 1;

if($result->num_rows > 0){ 
    while($row = $result->fetch_assoc()){ 
        if ($oldref != $row['refnumber']){
            // 插入PONumber变更的标识行
            $highlightRow = ["PO #{$row['refnumber']}", ""];
            $allRows[] = $highlightRow;
            $highlightRows[] = $currentRow;
            $currentRow++;
        }
        // 添加当前数据行
        $dataRow = [$row['partitem'], $row['partqty']];
        $allRows[] = $dataRow;
        $currentRow++;
        
        $oldref = $row['refnumber'];
    }
}

// 批量插入所有数据
if(!empty($allRows)){
    $valueRange = new \Google_Service_Sheets_ValueRange();
    $valueRange->setValues($allRows);
    $range = 'Sheet1'; 
    $options = ['valueInputOption' => 'USER_ENTERED'];
    $service->spreadsheets_values->append($spreadsheetId, $range, $valueRange, $options);

    // 批量设置标识行背景色
    $requests = [];
    $sheetId = $spreadsheet->getSheets()[0]->getProperties()->getSheetId();
    foreach($highlightRows as $rowNum){
        $requests[] = [
            'repeatCell' => [
                'range' => [
                    'sheetId' => $sheetId,
                    'startRowIndex' => $rowNum - 1,
                    'endRowIndex' => $rowNum,
                    'startColumnIndex' => 0,
                    'endColumnIndex' => 2
                ],
                'cell' => [
                    'userEnteredFormat' => [
                        'backgroundColor' => [
                            'red' => 0.9,
                            'green' => 0.7,
                            'blue' => 0.0
                        ]
                    ]
                ],
                'fields' => 'userEnteredFormat.backgroundColor'
            ]
        ];
    }

    if(!empty($requests)){
        $batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
            'requests' => $requests
        ]);
        $service->spreadsheets->batchUpdate($spreadsheetId, $batchUpdateRequest);
    }
}

核心改动说明

  • 新增$allRows数组统一存储所有待插入行(含标识行和数据行),最后仅调用一次append完成批量导入,减少API调用次数提升效率。
  • 新增$highlightRows记录标识行位置,通过batchUpdate批量设置背景色,实现分组标识效果。
  • 移除原循环内的逐行插入逻辑,改为一次性提交所有数据。
  • 标识行的文本内容、背景色、覆盖列数均可根据需求自定义调整。

内容的提问来源于stack exchange,提问作者Joey Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:53:11