从 Google Sheet API 获取单元格格式

Get Cell Format from Google Sheet API

我想检索 google sheet 中设置的单元格的 format/type,例如 [=] 中的纯文本、数字、日期、时间等37=] Sheet API。 Google Sheet format screenshot here. Google Sheet Sample

我正在使用 Srijan's reference 中的 API,它只能提取单元格的值,但我也需要格式。

代码参考如下:

$response = $service->spreadsheets_values->get($spreadsheetId, $getRange);
$values = $response->getValues();

输出如下:

{
header 1: "A1", - text
header 2: "100", - number
header 3: "888.88", - currency
header 4: "10 Apr 2020", - date
header 5: "E1", - text
header 6: "F1", - text
header 7: "G1", - text
header 8: "H1", - text
header 9: "I1", - text
header 10: "J1", - text
header 11: "K1", - text
header 12: "L1", - text
header 13: "M1" - text
},

期望的输出:

{
header 1: {
    "value" : "A1",
    "type" : "text"
},
header 2: {
    "value" : "100",
    "type" : "number"
}
},

根据Google Sheet API reference,看来我们确实可以得到单元格的格式。但是我们如何与我上面使用的 API 集成?

获得 data about specific cells, you need to call the method getspreadsheets。您可以Try this API,将includeGridData设置为true,然后浏览结果以检查是否有您要查找的信息。一旦你找到它,让我们用 php.

来获取它

如何获取php中的单元格数据(包括单元格格式)

  1. 按照 quickstart 指南 php 并检查您是否获得了想要的结果
  2. 调用包含参数includeGridData
  3. spreadsheet的方法get
  4. 调用spreadsheets的方法getSheets并存储结果
  5. 在结果中搜索您想要的数据
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'your spreadsheet id';
$spreadsheet = $service->spreadsheets->get($spreadsheetId,['includeGridData' => true]);
$sheet = $spreadsheet->getSheets();
$formats = $sheet[0]['data'][0]['rowData'][0]['values'];

注意事项

  • 最后一个零表示行号,如果有表头可以设置为1
  • formats 是一个包含给定行的所有列的数组。
  • 访问第一列并显示其值:
    $myJson = json_encode($formats[0]);
    echo $myJson;
    
  • 有一个对象 (effectiveValue) 指示值是 boolValueformulaValuenumberValue 还是 stringValue。但是,dates 被认为是 numberValue。为了区分 numberValue 的类型,还有另一个显示 cellFormat 的对象 (effectiveFormat)。它有一个名为 numberFormat 的 属性,表示单元格中 numberValue 的种类。

有了这些信息,您应该能够实现您的目标。

解决方法

使用 Apps Script and getnumberformats 代替 php。