2016-09-19 22 views
0

私はGoogleのPHP APIクライアントとの難しさをたくさん持っています。無効な値

私は、GoogleスプレッドシートAPIに送信されているJSONをダンプするようにREST.phpクラスを変更しました。私は不正な値を持っていることがわかりますOAuthの遊び場を使用

{ 
    "requests": [ 
     { 
      "updateCells": { 
       "fields": "*", 
       "rows": [ 
        [ 
         "0", 
         "1", 
         "2", 
         "3" 
        ], 
        [ 
         "this", 
         "is", 
         "a", 
         "csv" 
        ] 
       ], 
       "start": { 
        "columnIndex": 0, 
        "rowIndex": 0, 
        "sheetId": 1503856757 
       } 
      } 
     } 
    ] 
} 

:生成されます

JSONはこれです。なぜ値が無効であるのか分かりません。

私はコメントアウト「ディメンションの挿入Request」を持っています。私は次元を10行10列に設定して、なぜ値が無効であるのかを試してみようとします。エラーレスポンスは、これらの値が無効な理由を示していません。

私はOAuthの遊び場を経由して動作するようにディメンションを挿入要求を取得することができたが、私の人生のために私はupdateCellsRequestを動作させることはできません。

私は正確には、もAppendCellsRequestを使用すると同じエラーが発生します。

が返されるエラーのより詳細な分析を得るためにどこかありますか?

私は間違っていますか?

// https://developers.google.com/sheets/reference/rest/v4/spreadsheets/request#updatecellsrequest 
// Rows, Fields, Start, Range 
$updateCellsRequest = new \Google_Service_Sheets_UpdateCellsRequest(); 

$rowData = array(); 
$lexer = new Lexer(new LexerConfig()); 
$interpreter = new Interpreter(); 
$interpreter->addObserver(function(array $row) use (&$rowData, &$range) { 
    $sheetRowData = array(); 

    foreach ($row as $column => $value) { 
     $sheetCellData = new \Google_Service_Sheets_CellData(); 
     $eValue = new \Google_Service_Sheets_ExtendedValue(); 
     if (is_numeric($value)) { 
      $eValue->setNumberValue($value); 
     } else { 
      $eValue->setStringValue($value); 
     } 
     $sheetCellData->setUserEnteredValue($eValue); 
     $sheetRowData[] = $sheetCellData; 
    } 

    $sheetRowData = new \Google_Service_Sheets_RowData($sheetRowData); 
    $rowData[] = $row; 
}); 
$lexer->parse($fileName, $interpreter); 

$updateCellsRequest->setRows($rowData); 
$updateCellsRequest->setFields('*'); 

$gridCoord = new \Google_Service_Sheets_GridCoordinate(); 
$gridCoord->setSheetId($gSheet->getProperties()->getSheetId()); 
$gridCoord->setRowIndex(0); 
$gridCoord->setColumnIndex(0); 

$updateCellsRequest->setStart($gridCoord); 

$range = new \Google_Service_Sheets_GridRange(); 
$range->setSheetId($gSheet->getProperties()->getSheetId()); 
$range->setStartRowIndex(0); 
$range->setStartColumnIndex(0); 
$updateCellsRequest->setRange($range); 

// Google Sheets Service 
$sheetsService = new \Google_Service_Sheets($this->client); 

// Create a batch update request 
$updateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest(); 

// // Insert Dimension Request 
// $idr = new \Google_Service_Sheets_InsertDimensionRequest(); 

// $range = new \Google_Service_Sheets_DimensionRange(); 
// $range->setSheetId($gSheet->getProperties()->getSheetId()); 
// $range->setStartIndex(0); 
// $range->setDimension('ROWS'); 
// $range->setEndIndex(sizeof($rowData)); 

// $idr->setRange($range); 


// add a sheets request 
$sheetsRequest = new \Google_Service_Sheets_Request(); 
$sheetsRequest->setUpdateCells($updateCellsRequest); 
// $sheetsRequest->setInsertDimension($idr); 

// add the sheets request to our batch update 
$updateRequest->setRequests(array($sheetsRequest)); 

編集

エラー:

{ 
    "error": { 
    "status": "INVALID_ARGUMENT", 
    "message": "Invalid value at 'requests[0].append_cells.rows[0]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"0\"\nInvalid value at 'requests[0].append_cells.rows[1]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"1\"\nInvalid value at 'requests[0].append_cells.rows[2]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"2\"\nInvalid value at 'requests[0].append_cells.rows[3]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"3\"\nInvalid value at 'requests[0].append_cells.rows[0]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"this\"\nInvalid value at 'requests[0].append_cells.rows[1]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"is\"\nInvalid value at 'requests[0].append_cells.rows[2]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"a\"\nInvalid value at 'requests[0].append_cells.rows[3]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"csv\"", 
    "code": 400, 
    "details": [ 
     { 
     "fieldViolations": [ 
      { 
      "field": "requests[0].append_cells.rows[0]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[0]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"0\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[1]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[1]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"1\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[2]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[2]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"2\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[3]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[3]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"3\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[0]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[0]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"this\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[1]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[1]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"is\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[2]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[2]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"a\"" 
      }, 
      { 
      "field": "requests[0].append_cells.rows[3]", 
      "description": "Invalid value at 'requests[0].append_cells.rows[3]' (type.googleapis.com/google.apps.sheets.v4.RowData), \"csv\"" 
      } 
     ], 
     "@type": "type.googleapis.com/google.rpc.BadRequest" 
     } 
    ] 
    } 
} 

答えて

1

さてさて、私は最終的にこれを考え出しました。

私は間違って行を構築しました。 RowDataとCellDataを適切に使用する必要があります。

最終結果は、最初UpdateSheetProperties要求とUpdateCellsRequestを作成することでした。その後

$updateCellsRequest = new \Google_Service_Sheets_UpdateCellsRequest(array(
     'fields' => '*', 
     'start' => new \Google_Service_Sheets_GridCoordinate(array(
      'sheetId' => $gSheet->getProperties()->getSheetId(), 
      'rowIndex' => 0, 
      'columnIndex' => 0 
     )) 
    )); 

    // update sheet properties request 
    $updateSheetPropertiesRequest = new \Google_Service_Sheets_UpdateSheetPropertiesRequest(array(
     'fields' => '*', 
     'properties' => new \Google_Service_Sheets_SheetProperties(array(
      'index' => 0, 
      'title' => $this->generateSheetTitle($season), 
      'sheetId' => $gSheet->getProperties()->getSheetId(), 
      'gridProperties' => new \Google_Service_Sheets_GridProperties(array(
       'rowCount' => 2, 
       'columnCount' => 4 
      )) 
     )) 
    )); 

、updateCellsRequestオブジェクトに行を追加します。

// Google Sheets Service 
    $sheetsService = new \Google_Service_Sheets($this->client); 

    // Create a batch update request 
    $updateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
     'requests' => array(
      new \Google_Service_Sheets_Request(array('updateSheetProperties' => $updateSheetPropertiesRequest)), 
      new \Google_Service_Sheets_Request(array('updateCells' => $updateCellsRequest)) 
     ) 
    )); 

    // send the request 
    $sheetsService->spreadsheets->batchUpdate($spreadsheetId, $updateRequest); 
:バッチリクエストオブジェクトを作成し、

$rowData = array(); 
    $lexer = new Lexer(new LexerConfig()); 
    $interpreter = new Interpreter(); 
    $interpreter->addObserver(function(array $row) use (&$rowData) { 
     $sheetRowData = new \Google_Service_Sheets_RowData(); 
     $cellData = array(); 

     foreach ($row as $column => $value) { 
      $sheetCellData = new \Google_Service_Sheets_CellData(array(
       'userEnteredValue' => new \Google_Service_Sheets_ExtendedValue(array(
        is_numeric($value) ? 'numberValue' : 'stringValue' => $value 
       )) 
      )); 
      $cellData[] = $sheetCellData; 
     } 
     $sheetRowData->setValues($cellData); 
     $rowData[] = $sheetRowData; 
    }); 
    $lexer->parse($fileName, $interpreter); 

    $updateCellsRequest->setRows($rowData); 

そして最後に

関連する問題