0

PHPスクリプトを使用して、クエリの結果を基本的に.csvにダンプしてから、エンタープライズGoogleドキュメントの特定のフォルダーにアップロードします。

ファイルが作成され、ドキュメントに正常に送信されます。ただし、適切なディレクトリに配置されていません。

これは私が使用している関数です。ここ$file$folder、、、は、、、の$newtokenような文字列です。'dump.csv''0B0rVKeOmIwGXMGU2MzYyN2EtZWV...'[auth token from Google]

function insert($file, $folder, $newtoken){
    $mime = "Media multipart posting\n--END_OF_PART\n";
    $mime .= "Content-Type: application/atom+xml\n\n";
    $xml="<?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#document\"/>
        <title>example document</title>
        <docs:writersCanInvite value=\"true\" />
    </entry>
    ";
    $mime.=$xml."\n--END_OF_PART\n";

    $document = "Content-Type: text/plain\n\n";
    $handle = fopen($file, "r");
    $contents = fread($handle, filesize($filename));
    fclose($handle);
    $document.=$contents;
    $itemURL = "https://docs.google.com/feeds/default/private/full";
    $mime .= $document."\n--END_OF_PART--\n";

    $headers = array();
    $headers[] = "POST /feeds/default/private/full/folder%3A".$folder."/contents HTTP/1.1";
    $headers[] = "Host: docs.google.com";
    $headers[] = "GData-Version: 3.0";
    $headers[] = "Authorization: GoogleLogin auth=".$newtoken."";
    $headers[] = "Content-Length: ".strlen($mime);
    $headers[] = "Content-Type: multipart/related; boundary=END_OF_PART";
    $headers[] = "Slug: Test";

    $curl = curl_init();
    curl_setopt($curl,CURLOPT_URL,$itemURL);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl,CURLOPT_POSTFIELDS, $mime);
    $result = curl_exec($curl);
    curl_close($curl);

    echo 'Response: '.$result;
}

たぶん私はフォルダIDが間違っています(Googleドキュメントで表示しているときにURLからコピーしただけです)?
ボーナス:コンテンツタイプのヘッダーを操作して、Googleにファイルをスプレッドシートに変換させることはできますか?

4

1 に答える 1

0

あなたが持っている

$headers[] = "POST /feeds/default/private/full/folder%3A".$folder."/contents HTTP/1.1";

その後:

curl_setopt($curl,CURLOPT_URL,$itemURL);

決心しなさい。最初のものは間違っていると思います。オプションでURLを変更することはできませんCURLOPT_HTTPHEADER$itemURL完全なURL(を含む)に設定し/feeds/default/private/full/folder%3A".$folder."/contents、最初の行を削除します。

于 2010-07-15T17:32:02.320 に答える