我相信你的目标和你目前的情况如下。
- 您希望使用 googleapis for php 从 Google 电子表格中的工作表中检索超链接。
- 将超链接放入单元格。
- 您已经能够使用 Sheets API 从 Google 电子表格中检索值。
修改点:
- 在这种情况下,需要使用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
}
,
,
,
]
-
value 和 link 分别是单元格的值和单元格的超链接。
-
row 和 col 分别是单元格的行号和列号。
注意:
- 在此示例脚本中,它假定单元格具有超链接。如果超链接是单元格中的文本中的单词,则在当前阶段,无法检索超链接。如果要检索它,则需要使用 Google Apps 脚本作为当前的解决方法。 Ref
参考:
补充:
从您共享的电子表格中,我了解到您想从一个单元格中检索单元格值和超链接并将它们放入每个单元格。为此,我认为通过修改上述示例脚本,可以实现您的目标。修改后的脚本如下。
修改脚本:
$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($values, [$col -> getFormattedValue(), $link]);
}
}
}
$range = "Sheet2";
$body = new Google_Service_Sheets_ValueRange(array('values' => $values));
$service->spreadsheets_values->update($spreadsheetId, $range, $body, array('valueInputOption' => 'USER_ENTERED'));
- 在此脚本中,通过拆分单元格值和超链接,将从“Sheet1”检索到的单元格值和超链接放入“Sheet2”。所以在你使用这个脚本之前,请添加“Sheet2”的工作表。
- 在这种情况下,将值放入电子表格。所以请注意您使用的范围。