Google Drive APIで空のGoogle SpreadSheetを作成

2014年11月19日

Google Sheets API ではスプレッドシートファイルを作ることはできないようになっているので、Google Drive APIで作る必要がある。

APIで追加する方法が分からなかったので色々と試みた。

まず検索したら、mimeTypeは、application/vnd.google-apps.spreadsheet らしい。

それに空のデータを組み合わせてAPIをたたいたら、エラーになってアップできなかった。
そこで、空のスプレッドシートをまず作り、それをダウンロードして素材として取っておくことにした。

手順は以下の通り

  1. Google Driveへログイン
  2. 右クリックで、スプレッドシートを作成
  3. そのまま閉じてもファイルが生成されてないので、何か書いて消してから閉じる
  4. 出来たファイルをダウンロード ※.xlsxに変換される

以上の手順で、空のデータができる。

お気づきの方もいるかもしれないけど、普通に空のエクセル作ってもいい(爆

で、出来たエクセルをAPIでアップロードするのだが、タイトルをちゃんとつけるときは、multipartでやるといい。

<?php
$filename = 'ファイル名';
$access_token = 'アクセストークン'; //OAuthのアクセストークン

$metadata = json_encode(array(
'title' => $filename,
));

$emptySheet = file_get_contents( 'empty.xlsx' );

$boundary = 'who_am_i';
$content = << array(
'method' => 'POST',
'header' => $header,
'content' => $content,
),
));

$url = 'https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart&convert=true';
$response = @file_get_contents( $url, false, $context );

こんな感じ。

まあとにかく空のファイルは上げられないんでこういう動作が必要ってことで。