2017-03-29 266 views
0

我使用谷歌API客戶端庫的PHP(測試版)進行修改,谷歌的工作表。我想訪問電子表格中的第一張工作表,然後對其進行更改。訪問屬性

$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魔術的get/set語法並沒有什麼作品。

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

如何訪問此對象的屬性?

回答

0

你可能要檢查的Reference被單API 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) 

希望這有助於。