在這個使用 Sheets API 的 Google Sheet 中,從請求期間從 Sheet 檢索或通過 PHP 顯示排除 B 列和 C 列的簡單示例是什么?
可以從$service請求中排除 B 列和 C 列嗎?
或者,是否可以從 foreach 回圈中的顯示中排除 B 列和 C 列?
使用 R1C1 表示法?還是主要維度?
// 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 阿拉巴馬州 34567
約翰布拉瓊斯 456 貓空心貓鎮阿肯色州 12345
Joe Not blah Johns 99 Cow Hollow Cow Town 阿肯色州 12345
我可以排除 B 列和 C 列嗎,所以我得到:
喬·史密斯 123 Dogpatch Lane Dog Town 阿拉巴馬州 34567
約翰瓊斯 456 貓空心貓鎮阿肯色州 12345
喬·約翰斯 99 Cow Hollow Cow Town 阿肯色州 12345
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想從電子表格中檢索除“B”和“C”列之外的值。
- 您想使用 googleapis for PHP 來實作這一點。
- 您已經能夠使用 Sheets API 從電子表格中獲取值。
在這種情況下,以下模式如何?
模式一:
在這個模式中,使用了“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);
模式2:
在這個模式中,使用了“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".
參考:
- 方法:電子表格.values.get
- 方法:spreadsheets.values.batchGet
uj5u.com熱心網友回復:
根據檔案,電子表格.get請求不能從引數中排除定義的范圍,只能包括它們。
相反,您可以使用電子表格.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)
}
]
}
附加參考:
讀寫價值觀
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378452.html
上一篇:在PHP中重組陣列
