使用PHP API从Google表格单元格获取超链接

时间:2020-11-09 22:54:07

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

我找到了其他相关文章,但没有一篇基于PHP API给出我所需的答案。

我有一个电子表格,其中的单元格包含超链接:

enter image description here

这是我的代码:

$get_range = "Sheet1!A:Z";
$response = $service->spreadsheets_values->get($spreadsheetId, $get_range, ['valueRenderOption' => 'FORMULA']);
$values = $response->getValues();

$values返回的内容是

Array
(
    [0] => Array
        (
            [0] => Column Title
        )
    [1] => Array
        (
            [0] => Some Item
        )
    [2] => Array
        (
            [0] => Some Item with a Link
        )
    [3] => Array
        (
            [0] => Some Item
        )
    [4] => Array
        (
            [0] => Another Item
        )
)

您会注意到,返回的数据中与链接没有任何关系。有没有人成功使用PHP API获得链接?

1 个答案:

答案 0 :(得分:0)

我相信您的目标和当前情况如下。

  • 您要使用googleapis for php从Google Spreadsheet中的工作表中检索超链接。
  • 将超链接放置到单元格中。
  • 您已经能够使用Sheets API从Google Spreadsheet检索值。

修改点:

  • 在这种情况下,需要使用Sheets API中的“ spreadsheets.get”方法。而且,还需要为此使用fields

当以上几点反映到示例脚本中时,它如下所示。

示例脚本:

$spreadsheetId = "###"; // please set Spreadsheet ID.
$sheetName = "Sheet1"; // Please set sheet name.

$res = $service->spreadsheets->get($spreadsheetId, ["ranges" => [$sheetName], "fields" => "sheets(data(rowData(values(hyperlink,formattedValue))))"]);
$rowData = $res->getSheets()[0]->getData()[0]->getRowData();
$result = [];
foreach ($rowData as $i => $row) {
    foreach ($row as $j => $col) {
        $link = $col -> getHyperlink();
        if (isset($link)) {
            array_push($result, ["value" => $col -> getFormattedValue(), "link" => $link, "row" => $i + 1, "col" => $j + 1]);
        }
    }
}
print(json_encode($result));
  • 此示例脚本假定$service可用于从电子表格中检索值。请注意这一点。
  • 此示例脚本从工作表中检索超链接。如果要检索所有工作表,请修改上面的脚本。
  • 我使用sheets(data(rowData(values(hyperlink,formattedValue))))作为fields的值。您还可以将sheets用作fields

结果:

运行上述脚本时,将获得以下结果。

[
  {
    "value": "a3",
    "link": "https://sample1/",
    "row": 3,
    "col": 1
  },
  {
    "value": "a5",
    "link": "https://sample2/",
    "row": 5,
    "col": 1
  }
  ,
  ,
  ,
]
  • valuelink分别是单元格值和该单元格的超链接。
  • rowcol分别是单元格的行号和列号。

注意:

  • 在此示例脚本中,它假定该单元格具有超链接。如果超链接是单元格中文本中的单词,则在当前阶段,无法检索超链接。如果要检索它,则需要使用Google Apps脚本作为当前解决方法。 Ref

参考: