2016-09-19 3 views
4

그리드 ID에 대한 Google_Service_Exception 실패합니다. PHP 용 Google API 클라이언트를 사용하고 있습니다.는 API를 V4는 또한 차트를 렌더링 할 수있는 능력을 가진 매우 흥미보기 때문에 나는 구글 시트 API를 V4와 함께 놀았

우선 두 장으로 된 새 스프레드 시트를 만들고 첫 번째 시트에 데이터를 채 웁니다. 이것은 예상대로 작동했습니다.

그런 다음 첫 번째 시트의 데이터를 기반으로 한 두 번째 시트의 차트를 렌더링하려고했습니다. 파이 차트를 사용하여 쉬운 방법을 시작하고 싶었는데 그 이유는 하나의 데이터 시리즈 만 있기 때문입니다.

나는 항상 다음과 같은 오류 메시지와 함께 결국 :

"메시지": "잘못된 요청 [0] .addChart : ID를 가진 그리드 : 1"

유일한 ID가 I 설정이 이미 만든 두 번째 시트의 차트 앵커 셀의 하나입니다

$googleSheetsSheetGridCoordinate = new Google_Service_Sheets_GridCoordinate(); 
$googleSheetsSheetGridCoordinate->setSheetId(1); 
$googleSheetsSheetGridCoordinate->setColumnIndex(0); 
$googleSheetsSheetGridCoordinate->setRowIndex(0); 

$googleSheetsSheetOverlayPosition = new Google_Service_Sheets_OverlayPosition(); 
$googleSheetsSheetOverlayPosition->setAnchorCell($googleSheetsSheetGridCoordinate); 
$googleSheetsSheetOverlayPosition->setHeightPixels(500); 
$googleSheetsSheetOverlayPosition->setWidthPixels(700); 

스프레드 시트로 살펴보면,이 ID로 시트 : 1 그것은 또한 유형이 그리드, 그래서 여기에 어떤 문제가 있을지 모르겠다.

{ 
    "requests":[ 
     { 
     "addChart":{ 
      "chart":{ 
       "spec":{ 
        "title":"Pie Chart", 
        "pieChart":{ 
        "legendPosition":"BOTTOM_LEGEND", 
        "domain":{ 
         "sourceRange":{ 
          "sources":[ 
           { 
           "endRowIndex":3, 
           "sheetId":0, 
           "startColumnIndex":0, 
           "startRowIndex":2 
           } 
          ] 
         } 
        }, 
        "series":{ 
         "sourceRange":{ 
          "sources":{ 
           "endRowIndex":4, 
           "sheetId":0, 
           "startColumnIndex":0, 
           "startRowIndex":3 
          } 
         } 
        } 
        } 
       }, 
       "position":{ 
        "overlayPosition":{ 
        "heightPixels":500, 
        "widthPixels":700, 
        "anchorCell":{ 
         "columnIndex":0, 
         "rowIndex":0, 
         "sheetId":1 
        } 
        } 
       } 
      } 
     } 
     } 
    ] 
} 

내가 예와 비교하면, 하나의 내가, 즉 추가 차트를 포함 https://codelabs.developers.google.com/codelabs/sheets-api/#9을 찾을 수있는, 그것은 나에게 올바른 같습니다

업데이트 여기 내 addChart 요청의 POST 본문입니다 .

답변

2

좋아, 해결책을 찾았습니다. 나는 sheetId가 시트의 인덱스라고 생각했지만 시트가 생성되면 시트가 생성되는 ID입니다.

그래서 솔루션이 올바른 ID를 얻을 수 있습니다 :

$sourceId = $googleSheetsSpreadsheet->getSheets()[0]->getProperties()->getSheetId(); 
$targetId = $googleSheetsSpreadsheet->getSheets()[1]->getProperties()->getSheetId(); 

스프레드 시트를 업로드 할 때 하나의 요청을 만들 그것의 차트 시트를 만들 아직 수 없습니다 AFAIK 때문에 이러한 ID가 생성되어, 먼저 필요한 시트를 작성한 다음 다른 요청에서 차트를 추가 할 수 있습니다. [EmbeddedObjectPosition]의 TRUE '재산 (https://developers.google.com/sheets/reference/rest/v4/spreadsheets# : 새 시트에 차트를 추가하려면

+1

, 당신은'newSheet을 사용할 수 있습니다 AddChartRequest''에서 EmbeddedObjectPosition). 당신이 기존 시트에 차트를 추가하려면 , 당신은 그 시트를 추가 할 때 시트의 ID를 지정하고 차트의 시트 ID에 대해 같은 ID를 사용해야합니다. –

+0

감사합니다 샘! 잘 했어! – Kasihasi