0

PHPとcURLを使用して、GoogleドライブのXLSからスプレッドシートを作成しようとしています。.docからドキュメントを正常に作成しました。.csvからスプレッドシートを作成できますが、xlsファイルからドキュメントを作成しようとすると、プレビューなしで、ダウンロードのみのオプションが付いた状態で、Googleドライブに「ファイル」として保存されます。 。

次のコードを使用して、再開可能なアップロードを開始しています。

$curl = curl_init();

$upload_href = 'https://docs.google.com/feeds/upload/create-session/default/private/full'; // I'm actually taking the upload href from document listing

curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$filename = 'MyFile';
$type = 'spreadsheet'; 
$content_type = 'application/msexcel'; // I can use 'text/csv' here to upload csv files     just alright
$body = '<?xml version="1.0" encoding="UTF-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:docs="http://schemas.google.com/docs/2007"><category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/docs/2007#'.$type.'"/><title>'.$filename.'</title></entry>';

$headers = array(
"Authorization: GoogleLogin auth=" . $g_auth, //  using ClientLogin
"GData-Version: 3.0",
"Content-Length: ".strlen($body),
"Content-Type: application/atom+xml",
"X-Upload-Content-Type: ".$content_type,
"X-Upload-Content-Length: ".$buffer_size // the size of the spreadsheet to be uploaded
);

curl_setopt($curl, CURLOPT_URL, $upload_href);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
curl_setopt($curl, CURLOPT_HEADER, true); 

$response = curl_exec($curl);

// ...
// what follows is the start of resumable upload

GoogleSpreadsheetAPIはスプレッドシートの作成方法についてGoogleDocsAPIを指しますが、GoogleDocsAPIはスプレッドシートの作成に関して具体的なことを何も指していません。

ここで私が犯している間違いは間違ったContentTypeだと思いますが、GoogleAPIが受け入れるコンテンツタイプの有効なリストをどこで探すべきかわかりません。

4

1 に答える 1

0

mime typeを試しましたapplication/vnd.google-apps.spreadsheetか?GoogleAPIで受け入れ可能なmimeタイプです

于 2012-08-23T12:48:42.443 に答える