访问Google API客户端库中的属性(PHP)

时间:2017-03-29 13:27:08

标签: php google-analytics-api google-sheets-api

我正在使用Google API客户端库(PHP)来更改Google表格。我想访问电子表格中的第一个工作表,然后对其进行更改。

$service = new Google_Service_Sheets($this->client);
$spreadsheet = $service->spreadsheets->get($google_sheet_id);
$sheets = $spreadsheet->getSheets();

使用上面的代码我有一组Google_Service_Sheets_Sheet个对象。如果我var_dump()我可以在名为modelData的受保护数组中看到我需要的属性。我想访问sheetId属性。

...
["modelData":protected]=>
array(3) {
  ["properties"]=>
  array(5) {
    ["sheetId"]=>
    int(123456789)
    ["title"]=>
    string(15) "Page Popularity"
    ["index"]=>
    int(0)
    ["sheetType"]=>
    string(4) "GRID"
    ["gridProperties"]=>
    array(2) {
      ["rowCount"]=>
      int(4)
      ["columnCount"]=>
      int(4)
    }
  }
...

我已经尝试了所有我能想到的内容,包括标准的PHP魔法获取/设置语法,但没有任何作用。

$id = $sheets[0]->getSheetId(); // fails
$id = $sheets[0]->sheetId; // fails
$id = $sheets[0]->get('sheetId'); // fails

如何访问此对象的属性?

1 个答案:

答案 0 :(得分:0)

您可能需要查看Sheets API的Reference enter image description here

在上图中,工作表(object)包含属性(对象),其中包含sheetID(您想要获得的内容)。简而言之,它看起来像这样:

Sheets->properties->sheetID

或者:

Sheets:{
    properties:{
         "sheetId": number,
         "title": string,
         "index": number,
         ........
 },
............
}

尝试检查此post

中的代码
sheet_metadata = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute()
sheets = sheet_metadata.get('sheets', '')
title = sheets[0].get("properties", {}).get("title", "Sheet1")
sheet_id = sheets[0].get("properties", {}).get("sheetId", 0)

希望这有帮助。