[PHP] Google Sheets API でシート名・シートIDを取得する

PHPGoogle

Google Sheets API を使って PHP プログラムから、スプレッドシートにあるシート名とシート ID を取得する方法。
スプレッドシートにはタイトルとスプレッドシート ID があるが、シートにも 1 枚づつシート名と、シート ID がある。
シート名とは、シートの下のタブにある(名前を変更しないと)「シート1」とかのことで、シート ID は、 URL にある gid 以降に書かれている数値。

URL の例 : https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=sheetId

シート名を取得する


$service = new Google_Service_Sheets($client);
// スプレッドシートの URL にある spreadsheetId
$spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqpt---------';
$response = $service->spreadsheets->get($spreadsheetId);
foreach($response->getSheets() as $sheet) {
    echo $sheet['properties']['title'];
    // または
    echo $sheet->properties->title;
}

$sheet['properties']['title'] でも、 $sheet->properties->title でも、取得できる。

シート ID を取得する


$response = $service->spreadsheets->get($spreadsheetId);
foreach($response->getSheets() as $sheet) {
    echo $sheet['properties']['sheetId'];
    // または
    echo $sheet->properties->sheetId;
}

シート ID は 1 枚目のシート(「シート1」)は、 0 になるみたい。

SheetProperties の中身

properties という要素の中身をダンプしてみた。


echo "
";
var_dump($response->getSheets()[0]['properties']);
echo "
";

出力結果

object(Google_Service_Sheets_SheetProperties)#78 (14) {
  ["gridPropertiesType":protected]=>
  string(36) "Google_Service_Sheets_GridProperties"
  ["gridPropertiesDataType":protected]=>
  string(0) ""
  ["hidden"]=>
  NULL
  ["index"]=>
  int(0)
  ["rightToLeft"]=>
  NULL
  ["sheetId"]=>
  int(0)
  ["sheetType"]=>
  string(4) "GRID"
  ["tabColorType":protected]=>
  string(27) "Google_Service_Sheets_Color"
  ["tabColorDataType":protected]=>
  string(0) ""
  ["title"]=>
  string(10) "シート1"
  ["internal_gapi_mappings":protected]=>
  array(0) {
  }
  ["modelData":protected]=>
  array(0) {
  }
  ["processed":protected]=>
  array(0) {
  }
  ["gridProperties"]=>
  object(Google_Service_Sheets_GridProperties)#79 (10) {
    ["columnCount"]=>
    int(26)
    ["columnGroupControlAfter"]=>
    NULL
    ["frozenColumnCount"]=>
    NULL
    ["frozenRowCount"]=>
    NULL
    ["hideGridlines"]=>
    NULL
    ["rowCount"]=>
    int(1000)
    ["rowGroupControlAfter"]=>
    NULL
    ["internal_gapi_mappings":protected]=>
    array(0) {
    }
    ["modelData":protected]=>
    array(0) {
    }
    ["processed":protected]=>
    array(0) {
    }
  }
}

Posted by Agopeanuts