APIでGoogleスプレッドシートの追加/更新/削除:Spreadsheets Data APIを使うための基礎知識(2)(2/3 ページ)
SaaS形式のさまざまなGoogle Appsを操作するGData APIの1つ、Googleスプレッドシートを操作するSpreadsheets Data APIのJavaライブラリの使い方を基本から紹介する入門連載(編集部)
Spreadsheets Data APIでワークシートのメタ情報の更新
次は、ワークシートのメタ情報の更新です。具体的には、ワークシートの名前や行数、列数を更新できます。サンプルのWorksheetUpdate.javaを実行すると、先ほど追加した「てすと」ワークシートのメタ情報を以下のように更新できます。
- 名前:てすと → 更新
- 行数:10 → 5
- 列数:4 → 2
また、WorksheetUpdateの中で「SpreadsheetUtil」というクラスを利用していますが、これは今回のサンプル用に作成したユーティリティクラスです。そのためSpreadsheetUtil.javaもコピーしてください。コピーが終わったら、getSpreadsheetServiceメソッド内のusernameとpassword変数に自分のメールアドレスとパスワードを設定してください。
実行すると「テスト」ワークシートの名前が「更新」になり、行数と列数が減っていると思います。ワークシート名が変わらない場合は、画面を再読み込みしてください。
コードから抜粋して解説します。
// ワークシートのメタ情報を更新 worksheetEntry.setTitle(new PlainTextConstruct("更新")); worksheetEntry.setRowCount(5); worksheetEntry.setColCount(2); worksheetEntry = worksheetEntry.update(); System.out.println("ワークシートのメタ情報の更新が完了しました。");
メタ情報を更新するには、更新対象のWorksheetEntryのsetterを利用して更新したい情報を設定します。その後、WorksheetEntryのupdateメソッドを実行すると、ワークシートのメタ情報が更新されます。また、注意点としては、以下が挙げられます。
- 列数および行数を減らした場合、データの有無にかかわらず、削除対象となった行および列のセルが削除される。そのため列数および行数を減らす場合は、セルが削除されて問題ないか確認する
実行すると「テスト」ワークシートの名前が「更新」になり、行数と列数が減っていると思います。ワークシート名が変わらない場合は、画面を再読み込みしてください。
Spreadsheets Data APIでワークシートを削除するには
最後に、ワークシートの削除です。以下の「WorksheetDelete.java」を実行すると、先ほど更新した「更新」ワークシートを削除できます。WorksheetDelete.javaをコピーして実行してください。「ワークシート操作」スプレッドシートから「更新」ワークシートが削除されていると思います。
package sample; import com.google.gdata.client.spreadsheet.SpreadsheetService; import com.google.gdata.data.spreadsheet.SpreadsheetEntry; import com.google.gdata.data.spreadsheet.WorksheetEntry; public class WorksheetDelete { public static void main(String[] args) throws Exception { // 操作対象のワークシートを取得 SpreadsheetService service = SpreadsheetUtil.getSpreadsheetService(); SpreadsheetEntry spreadsheetEntry = SpreadsheetUtil.findSpreadsheet( service, "ワークシート操作"); WorksheetEntry worksheetEntry = SpreadsheetUtil.findWorksheet( spreadsheetEntry, "更新"); // ワークシートを削除 worksheetEntry.delete(); System.out.println("ワークシートの削除が完了しました。"); } }
ワークシートを削除するには削除対象のWorksheetEntryを取得し、そのWorksheetEntryのdeleteメソッドを実行するだけです。
デフォルトワークシートについて
SpreadsheetEntryクラスのgetDefaultWorksheetメソッドでは、デフォルトワークシートを取得できます。この「デフォルトワークシート」とはスプレッドシートの左端のワークシートを指します。そのため、デフォルトワークシートを変更したい場合は対象のワークシートを左端まで移動してください。
なお、現時点でAPI経由ではワークシートを左右に移動できないようです。
Spreadsheets Data APIで行単位でデータ追加するには
まずは、行の追加です。「行単位でのデータ操作」という名前のスプレッドシートを作ってください。作り終えたら、1行目の各セルに「名称」「数量」「価格」と入力してください。
このワークシートにAPIを使って、以下のように2行分のデータを追加します。
では、実際に追加してみましょう。サンプルの「ListAdd.java」をコピーして実行してください。2行分のデータが追加されていると思います。
コードから抜粋して解説します。
// 行を追加 ListEntry listEntry; listEntry = new ListEntry(); listEntry.getCustomElements().setValueLocal("名称", "りんご"); listEntry.getCustomElements().setValueLocal("数量", "1"); listEntry.getCustomElements().setValueLocal("価格", "100"); service.insert(worksheetEntry.getListFeedUrl(), listEntry);
行を追加するにはワークシートの追加と同様にSpreadsheetServiceのinsertメソッドを利用します。第1引数は、行を操作する際のURLです。第2引数はListEntryのインスタンスで、このインスタンスにあらかじめカラム名とその値をペアにして設定しておく必要があります。カラム名はワークシートの1行目の各セルの値が利用されます。
なお、注意点としては、以下が挙げられます。
- 必ず1行目にカラム名を設定。行単位で操作する場合は1行目がヘッダー行という扱いになる。そのため1行目にカラム名を設定しない状態で行追加を行うと、InvalidEntryExceptionがthrowされる
- カラム名はアルファベットの大文字と小文字を区別しない(case-insensitive)。そのため、ワークシート側でカラム名に大文字と小文字を含めていても、API経由の場合はすべて小文字でカラム名を指定する必要がある(例えばワークシートのカラム名が「NAME」の場合はAPI側では「name」と指定する)
- カラム名に含まれる空白文字は削除した上で指定する必要がある(例えば、カラム名が「book title」の場合は「booktitle」と指定)
カラム名の仕様については、「gsx namespace element reference」を参照してください。なお筆者が試したところ、半角空白だけでなく全角空白についても削除する必要がありました。
次ページでは、行単位でデータを更新・削除する方法やListEntryを取得する3つの方法を解説します。
Copyright © ITmedia, Inc. All Rights Reserved.