Google Sheets API v.4 for PHP:从 $request 中排除某些列
Google Sheets API v.4 for PHP: exclude certain columns from $request
在此 Google Sheet 中使用 Sheets API,从 [=36= 的任一检索中排除 B 列和 C 列的简单示例是什么? ] 在请求期间,或通过 PHP?
显示
B 列和 C 列是否可以从 $service
请求中排除?
或者,是否可以在 foreach 循环中排除 B 列和 C 列的显示?
使用 R1C1 表示法?还是主要维度? https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values
// Usual suspects
require_once __DIR__ . '/vendor/autoload.php';
$googleAccountKeyFilePath = __DIR__ . '/service_key.json';
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $googleAccountKeyFilePath);
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/spreadsheets');
$service = new Google_Service_Sheets($client);
$spreadsheetId = '';
$response = $service->spreadsheets->get($spreadsheetId);
$spreadsheetProperties = $response->getProperties();
//The $range where columns could be excluded?
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
//The foreach loop where columns could be excluded?
foreach($values as $val) {
$valuespan = "<span>".implode('</span> <span>', $val)."</span>";
echo $valuespan;
}
这是现在的输出:
Joe Null blah blah Smith 123 Dogpatch Lane Dog Town Alabama 34567
John Blah Jones 456 Cat Hollow Cat Town Arkansas 12345
Joe Not blah Johns 99 Cow Hollow Cow Town Arkansas 12345
我能否排除 B 列和 C 列,这样我得到:
Joe Smith 123 Dogpatch Lane Dog Town Alabama 34567
John Jones 456 Cat Hollow Cat Town Arkansas 12345
Joe Johns 99 Cow Hollow Cow Town Arkansas 12345
根据文档,spreadsheets.get 请求无法从参数中排除定义的范围,只能包括它们。
相反,您可以使用 spreadsheets.batchGet 请求,以便可以输入多个范围作为参数:
参数:
ranges[]
字符串
要从中检索值的范围的 A1 表示法或 R1C1 表示法。
样本:
$ranges = array('Sheet1!A2:A','Sheet1!D2:I');
$response = $service->spreadsheets_values->batchGet($spreadsheetId, $ranges);
response
就是这个对象,你可以在其中遍历ValueRange
数组,例如valueRange[i].values
来获取实际的单元格值。
{
"spreadsheetId": string,
"valueRanges": [
{
object (ValueRange)
}
]
}
附加参考:
我相信你的目标如下。
- 您想从电子表格中检索不包括列“B”和“C”的值。
- 您想使用 googleapis 实现此目的 PHP。
- 您已经能够使用表格从电子表格中获取值 API。
在这种情况下,以下模式如何?
模式 1:
在这个模式中,使用了“spreadsheets.values.get”的方法。首先从"Sheet1!A2:I"中取值,可以通过转置的方式取值。
发件人:
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
收件人:
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$transpose = array_map(null, ...$response->getValues());
array_splice($transpose, 1, 2);
$values = array_map(null, ...$transpose);
模式二:
在这个模式中,使用了“spreadsheets.values.batchGet”的方法。首先,从“Sheet1!A2:A”和“Sheet1!D2:I”中检索值,并将检索到的值合并为一个数组。
发件人:
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
收件人:
$response = $service->spreadsheets_values->batchGet($spreadsheetId, array('ranges' => ['Sheet1!A2:A', 'Sheet1!D2:I']));
$values = [];
foreach($response['valueRanges'][0]['values'] as $i => $v) {
array_push($values, array_merge($v, $response['valueRanges'][1]['values'][$i]));
}
// In this case, you can retrieve the result values as "$values".
参考文献:
在此 Google Sheet 中使用 Sheets API,从 [=36= 的任一检索中排除 B 列和 C 列的简单示例是什么? ] 在请求期间,或通过 PHP?
显示B 列和 C 列是否可以从 $service
请求中排除?
或者,是否可以在 foreach 循环中排除 B 列和 C 列的显示?
使用 R1C1 表示法?还是主要维度? https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values
// Usual suspects
require_once __DIR__ . '/vendor/autoload.php';
$googleAccountKeyFilePath = __DIR__ . '/service_key.json';
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $googleAccountKeyFilePath);
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/spreadsheets');
$service = new Google_Service_Sheets($client);
$spreadsheetId = '';
$response = $service->spreadsheets->get($spreadsheetId);
$spreadsheetProperties = $response->getProperties();
//The $range where columns could be excluded?
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
//The foreach loop where columns could be excluded?
foreach($values as $val) {
$valuespan = "<span>".implode('</span> <span>', $val)."</span>";
echo $valuespan;
}
这是现在的输出:
Joe Null blah blah Smith 123 Dogpatch Lane Dog Town Alabama 34567
John Blah Jones 456 Cat Hollow Cat Town Arkansas 12345
Joe Not blah Johns 99 Cow Hollow Cow Town Arkansas 12345
我能否排除 B 列和 C 列,这样我得到:
Joe Smith 123 Dogpatch Lane Dog Town Alabama 34567
John Jones 456 Cat Hollow Cat Town Arkansas 12345
Joe Johns 99 Cow Hollow Cow Town Arkansas 12345
根据文档,spreadsheets.get 请求无法从参数中排除定义的范围,只能包括它们。
相反,您可以使用 spreadsheets.batchGet 请求,以便可以输入多个范围作为参数:
参数:
ranges[]
字符串
要从中检索值的范围的 A1 表示法或 R1C1 表示法。
样本:
$ranges = array('Sheet1!A2:A','Sheet1!D2:I');
$response = $service->spreadsheets_values->batchGet($spreadsheetId, $ranges);
response
就是这个对象,你可以在其中遍历ValueRange
数组,例如valueRange[i].values
来获取实际的单元格值。
{
"spreadsheetId": string,
"valueRanges": [
{
object (ValueRange)
}
]
}
附加参考:
我相信你的目标如下。
- 您想从电子表格中检索不包括列“B”和“C”的值。
- 您想使用 googleapis 实现此目的 PHP。
- 您已经能够使用表格从电子表格中获取值 API。
在这种情况下,以下模式如何?
模式 1:
在这个模式中,使用了“spreadsheets.values.get”的方法。首先从"Sheet1!A2:I"中取值,可以通过转置的方式取值。
发件人:
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
收件人:
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$transpose = array_map(null, ...$response->getValues());
array_splice($transpose, 1, 2);
$values = array_map(null, ...$transpose);
模式二:
在这个模式中,使用了“spreadsheets.values.batchGet”的方法。首先,从“Sheet1!A2:A”和“Sheet1!D2:I”中检索值,并将检索到的值合并为一个数组。
发件人:
$range = 'Sheet1!A2:I';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
收件人:
$response = $service->spreadsheets_values->batchGet($spreadsheetId, array('ranges' => ['Sheet1!A2:A', 'Sheet1!D2:I']));
$values = [];
foreach($response['valueRanges'][0]['values'] as $i => $v) {
array_push($values, array_merge($v, $response['valueRanges'][1]['values'][$i]));
}
// In this case, you can retrieve the result values as "$values".