从 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 get 个 spreadsheets
。您可以Try this API
,将includeGridData
设置为true
,然后浏览结果以检查是否有您要查找的信息。一旦你找到它,让我们用 php.
来获取它
如何获取php中的单元格数据(包括单元格格式)
- 按照 quickstart 指南 php 并检查您是否获得了想要的结果
- 调用包含参数
includeGridData
的spreadsheet
的方法get
- 调用
spreadsheets
的方法getSheets
并存储结果
- 在结果中搜索您想要的数据
$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
) 指示值是 boolValue
、formulaValue
、numberValue
还是 stringValue
。但是,dates
被认为是 numberValue
。为了区分 numberValue
的类型,还有另一个显示 cellFormat 的对象 (effectiveFormat
)。它有一个名为 numberFormat
的 属性,表示单元格中 numberValue
的种类。
有了这些信息,您应该能够实现您的目标。
解决方法
使用 Apps Script and getnumberformats 代替 php。
我想检索 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 get 个 spreadsheets
。您可以Try this API
,将includeGridData
设置为true
,然后浏览结果以检查是否有您要查找的信息。一旦你找到它,让我们用 php.
如何获取php中的单元格数据(包括单元格格式)
- 按照 quickstart 指南 php 并检查您是否获得了想要的结果
- 调用包含参数
includeGridData
的 - 调用
spreadsheets
的方法getSheets
并存储结果 - 在结果中搜索您想要的数据
spreadsheet
的方法get
$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
) 指示值是boolValue
、formulaValue
、numberValue
还是stringValue
。但是,dates
被认为是numberValue
。为了区分numberValue
的类型,还有另一个显示 cellFormat 的对象 (effectiveFormat
)。它有一个名为numberFormat
的 属性,表示单元格中numberValue
的种类。
有了这些信息,您应该能够实现您的目标。
解决方法
使用 Apps Script and getnumberformats 代替 php。