2017-08-14 23 views
1

GoogleドライブAPIを使用してGoogleシートを「Webに公開」モードに設定してウェブサイトに埋め込むことを試みています。私のPHPでのドライブのAPIを使用してドライブAPI(PHP)を使用してGoogleスプレッドシートに「publish to web」を設定

: - 私の知る限り、これはドライブのAPI仕様(私は本当に彼らがPHPのコード例を削除していなかったなあ!)に準拠して言うことができるように

// Get the API client and construct the service object. 
$client = getClient(); 
$service = new Google_Service_Sheets($client); 

$driveservice = new Google_Service_Drive($client); 
/* 
$copiedFile = new Google_Service_Drive_DriveFile(array('name' => 'Project plan')); 
$responseBody=$driveservice->files->copy("1hAjKEox4hhlK4aoCVLuUVfTJbKPhFklG1gG9-HsGH7U", $copiedFile); 
$sheet_id=$responseBody->id; 
*/ 
$sheet_id="1tYktONmPaaxGaS5ylNn8nTzPjtdEsuYIDHakhap8Amk"; 
$revisions=$driveservice->revisions; 
$sheetinformation =$revisions->listRevisions("1tYktONmPaaxGaS5ylNn8nTzPjtdEsuYIDHakhap8Amk"); 
$revisions=$sheetinformation->getRevisions(); 
$count=count($revisions); 
$revision_id=$revisions[$count-1]->id; 
$finalrevision=$driveservice->revisions->get($sheet_id,$revision_id); 
$finalrevision->publishAuto=true; 
$driveservice->revisions->update($sheet_id,$revision_id, $finalrevision); 

die(); 

。しかし、レスポンス本文に次のエラーが返されています。 -

"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "fieldNotWritable", 
    "message": "The resource body includes fields which are not directly writable." 
    } 
    ], 
    "code": 403, 
    "message": "The resource body includes fields which are not directly writable." 
} 
} 

助けてください。 finalrevisionを取得するとき

+0

この[SO post](https://stackoverflow.com/questions/38533957/google-sheets-api-how-to-publish-to-web-for-embeddable-sheet)を参照すると、最後のリビジョンパラメータ?サンプルがfileIdとrevisionIdのみ使用されているようです。 – noogui

答えて

0

パラメータを追加します。

$finalrevision=$driveservice->revisions->get($sheet_id,$revision_id, array('fields' => 'publishAuto')); 

を最後のパラメータがない場合、この方法は(ものだけを読ん含めて、すべてのフィールドで)あなたの全体のリビジョンを返します取得します。

関連する問題