首页 > 解决方案 > 从 Google Sheet API 获取单元格格式

问题描述

我想从 Google Sheet API 中检索在 google sheet 中设置的单元格的格式/类型,例如纯文本、数字、日期、时间等。 谷歌表格格式截图在这里。 谷歌表格样本

我正在使用此Srijan 参考中的 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 参考,看来我们实际上可以得到单元格的格式。但是我们如何与我上面使用的 API 集成呢?

标签: phpgoogle-sheetsgoogle-sheets-api

解决方案


要获取有关特定单元格的数据,您需要调用get of方法spreadsheets。您可以Try this API设置includeGridDatatrue探索结果以检查是否有您正在寻找的信息。一旦你找到它,让我们用 php.ini 获取它。

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

  1. 按照快速入门指南 php 并检查您是否获得了所需的结果
  2. 调用包含参数get的方法spreadsheetincludeGridData
  3. 调用方法getSheetsspreadsheets存储结果
  4. 在结果中搜索您想要的数据
$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指示该值是boolValueformulaValue还是。不过,都考虑。为了区分类型,还有另一个显示cellFormat的对象 () 。它有一个名为的属性,指示单元格中的类型。numberValuestringValuedatesnumberValuenumberValueeffectiveFormatnumberFormatnumberValue

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

解决方法

使用Apps Scriptgetnumberformats而不是 php。


推荐阅读