使用PHP从Google表格中获取单元格格式信息

时间:2019-11-13 18:01:16

标签: php google-api google-sheets-api google-api-php-client

我正在使用google-api-php-clientgoogle-api-php-client-services库通过以下方式从Google表格中读取值:

   $service = new \Google_Service_Sheets($this->calendarService->getClient());
        $spreadsheetId = 'abhslJcKXjIqS8bAJ1lojekXuOk0WOSrdtVtJ2C512jQ';

        $range = 'Sheet Name';

        $response = $service->spreadsheets_values->get($spreadsheetId, $range);

        $values = $response->getValues(); // returns all cells as array

如何获取有关每个单元格格式的信息? (例如,数字,日期,电子邮件等)。

2 个答案:

答案 0 :(得分:1)

您无法从Spradsheets.batchUpdate [1]获得的任何响应都包含有关单元格格式的信息。 Spreadsheets.values.get请求[2]均未在其响应中包含此信息(ValueRange对象[3])。您可以使用UpdateCells请求[4]更改单元格格式,但无法使用Sheets API检索它。

使用Apps脚本,有一个函数可以检索数字/日期格式[5],您可以使用此方法来解决。

[1] https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/response#Response

[2] https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/get

[3] https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values#ValueRange

[4] https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#UpdateCellsRequest

[5] https://developers.google.com/apps-script/reference/spreadsheet/range.html#getNumberFormat()

答案 1 :(得分:1)

您可以获取单元格格式,还可以获取textFormat(粗体,删除线等)。此外,您可以搜索对象,每个单元格都有更多规范。

Cell Documentation of google api

要获取此信息,您应使用Google_Service_Sheets->电子表格方法,包括如下所示的gridData:

$sheets = new \Google_Service_Sheets($client); //callling sheet api with authorized client 
$spreadsheet = $sheets->spreadsheets->get($spreadsheetId,['includeGridData' => true]);

我认为电子表格有1张纸可以显示正确的格式设置:

$sheet = $spreadsheet->getSheets();
$format = $sheet[0]['data'][0]['rowData']['values'][0]['effectiveFormat']['numberFormat]; //this is one of example from that object

希望有帮助