更新值&创建新行 - Google表格API

时间:2017-03-15 23:07:41

标签: php json google-sheets-api

<?php 
$date_added = date('Y');
$api_key = 'abc';
$spreadsheet_id = '1-def';
$valueInputOption = 'USER_ENTERED';
$range="A9:F9";
$values = array("this","is","my","awesome","test","$date_added");
$access_token = "xyz";

$values_encoded = json_encode($values);

$AppendCellsRequest = "{
  'sheetId': 1,
  'rows': [
    {
      object(RowData)
    }
  ],
  'fields': $values_encoded,
}";

json_decode($AppendCellsRequest);

$url = 'https://sheets.googleapis.com/v4/spreadsheets/'.$spreadsheet_id.'/values/'.$range.'?valueInputOption='.$valueInputOption.'?key='.$api_key.
        '?access_token='.$access_token.'?response_type=code';

$url_json = file_get_contents($url);

if(!$url_encoded = json_decode($url_json, true)) {
    echo "Sorry";
}

?>

我的代码有点脏,但此刻我还拉空了。

基本上,我希望我的脚本接收值并将它们添加到我的google工作表中。

对于这个例子,我将值设为一个简单的数组,但我将包含一个非常基本的名称形式,年龄和时间;电话号码。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

Reading & Writing Cell Values中所述,您可以使用以下方法:

尝试使用:

$values = array(
    array(
        // Cell values ...
    ),
    // Additional rows ...
);
$body = new Google_Service_Sheets_ValueRange(array(
  'values' => $values
));
$params = array(
  'valueInputOption' => $valueInputOption
);
$result = $service->spreadsheets_values->update($spreadsheetId, $range,
    $body, $params);

以下是您可以尝试的示例:

$values = array(
    array(
        // Cell values ...
    ),
    // Additional rows ...
);
$data = array();
$data[] = new Google_Service_Sheets_ValueRange(array(
  'range' => $range,
  'values' => $values
));
// Additional ranges to update ...

$body = new Google_Service_Sheets_BatchUpdateValuesRequest(array(
  'valueInputOption' => $valueInputOption,
  'data' => $data
));
$result = $service->spreadsheets_values->batchUpdate($spreadsheetId, $body);

此外,您可以选择是否要在表后覆盖现有数据或为新数据插入新行。默认情况下,输入会覆盖表之后的数据。要将新数据写入新行,请指定insertDataOption=INSERT_ROWS

答案 1 :(得分:0)

$result = $this->batchUpdateValues($id, 'A1:B2', 'USER_ENTERED', array(
        array('A', 'B'),
        array('C', 'D')
    ));

public function batchUpdateValues($spreadsheetId, $range, $valueInputOption,
  $_values)
{
    $service = $this->service;
    // [START sheets_batch_update_values]
    $values = [
        [
            // Cell values ...
        ],
        // Additional rows ...
    ];
    // [START_EXCLUDE silent]
    $values = $_values;
    // [END_EXCLUDE]
    $data = [];
    $data[] = new Google_Service_Sheets_ValueRange([
        'range' => $range,
        'values' => $values
    ]);
    // Additional ranges to update ...
    $body = new Google_Service_Sheets_BatchUpdateValuesRequest([
        'valueInputOption' => $valueInputOption,
        'data' => $data
    ]);
    $result = $service->spreadsheets_values->batchUpdate($spreadsheetId, $body);
    printf("%d cells updated.", $result->getTotalUpdatedCells());
    // [END sheets_batch_update_values]
    return $result;
}

来源: