将 google sheet 的最后一行更新为 PHP

Update last row of google sheet with PHP

我需要在 Excel 行的最后一个单元格(G 列)中插入一个变量。

在第一阶段,前5个单元格被填满,包括入住时间,稍后我必须进入结帐。

变量正确到达 .php 文件,因为在插入阶段一切正常。

现在我想了解输入退房日期的最佳解决方案是什么。

我可以通过仅在最后一个单元格中插入变量来更新行吗?

可能会一次插入多行,因此我应该能够根据其他单元格的值进行更新,例如(唯一)phone 数字。

你能帮帮我吗?

附上插入一行的工作代码:

    $range ="info_contatto";
    
    $values = [
        [$_POST['datetime_in'], $_POST['firstname'], $_POST['lastname'], $_POST['address'], $_POST['phonenumber'], $_POST['temperature'], ""],
    ];
    
    $body = new Google_Service_Sheets_ValueRange([
        'values' => $values    
    ]);
    
    $params = [
        'valueInputOption' => 'RAW'
    ];
    
    $insert = [
        "insertDataOption" => "INSERT_ROWS"
    ];
    
    $result = $service->spreadsheets_values->append(
        $spreadsheetId,
        $range,
        $body,
        $params,
        $insert
    );

我相信你的目标如下。

  • 对于 Google 电子表格,您想通过使用 googleapis 搜索“E”(“电话号码”)的值来更新“G”列的单元格 php。

修改点:

  • 遗憾的是,在当前阶段,无法通过表格直接搜索值API。所以在这种情况下,需要以下流程。
    1. 从电子表格中检索值。
      • spreadsheets.values.get已使用。
    2. 从检索到的值中搜索一个值。
      • 在这种情况下,使用脚本。
    3. 使用搜索结果更新单元格。
      • spreadsheets.values.batchUpdate已使用。

当上面的流程反映到脚本中,就变成了下面的样子。

修改后的脚本:

$search_phonenumber = "###";  // Please set the value you want to search. In this case, the column "E" is searched.
$put_value = "###";  // Please set the value you want to put. In this case, the value is put to the column "G".
$spreadsheetId = "###"; // please set Spreadsheet ID.
$range = "info_contatto"; // please set the range (sheet name).

$client = getClient();
$service = new Google_Service_Sheets($client);
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
$rows = [];
foreach ($values as $i => $v) {
    if ($v[4] == $search_phonenumber) {
        array_push($rows, $i);
    }
}
if (count($rows) > 0) {
    $data = Array_map(function($r) use($range, $put_value) { return new Google_Service_Sheets_ValueRange([
        'range' => $range . "!G" . ($r + 1),
        'majorDimension' => 'ROWS',
        'values' => [[$put_value]]
    ]);}, $rows);
    $requestBody = new Google_Service_Sheets_BatchUpdateValuesRequest([
        "valueInputOption" => "USER_ENTERED",
        "data" => $data
    ]);
    $response = $service->spreadsheets_values->batchUpdate($spreadsheetId, $requestBody);
    rint(json_encode($response));
};

注:

  • 在此示例脚本中,假设 $service 可用于检索和放置 Google 电子表格的值。请注意这一点。

参考文献: