ショコラ
PHP Google_Service_SheetsのシートのIDとインデックスを取得するには?
タイトルから一発でシートが取得できればいいのですが、、、
もっさん先輩
ひとまず、スプレッドシートを取得する
$google_credentials_json = "あのグーグルのJSON形式の文字列";
$google_sheet_id = "シートID(URLのところ)";
$client = new \Google_Client();
$client->addScope( \Google_Service_Sheets::SPREADSHEETS );
// 認証
$auth = tempnam(sys_get_temp_dir(),'auth-');
file_put_contents($auth,$google_credentials_json);
$client->setAuthConfig($auth);
unlink($auth);
$service = new \Google_Service_Sheets($client);
$spreadsheet = $service->spreadsheets->get($google_sheet_id);
シートタイトルから、シートインデックスとシートIDを取得する。
$sheet_title = 'シートタイトル'; // これでタイトルを検索する
$sheet_id = null;
$sheet_idx = null;
foreach ($spreadsheet->getSheets() as $i => $sheet) {
if ($sheet_title == $sheet->properties->title) {
$sheet_id = $sheet->properties->sheetId;
$sheet_idx = $sheet->properties->index;
break;
}
}
// シート無し
if (empty($sheet_id)) {
return false;
}
array_filter を使うと、こんな感じで短く書けます。
$sheet_title = 'シートタイトル'; // これでタイトルを検索する
$sheet = array_filter($spreadsheet->getSheets(), function($sheet) use ($sheet_title) {
return $sheet->properties->title == $sheet_title;
});
// シート無し
if (empty($sheet)) {
return false;
}
$sheet = reset($sheet);
$sheet_id = $sheet->properties->sheetId;
$sheet_idx = $sheet->properties->index;
以上