GASでエクセルの値を取得する
GAS(GoogleAppsScript)は、Google スプレッドシートの値を取得できます。2019/5からGoogle ドライブ上の Office 形式のファイルを直接、編集できるようになりました。
GASからも直接XLSXファイルからデータを取り出せるのでしょうか。試してみました。
GASとエクセルとスプレッドシートを用意
GASテストフォルダを作成し、ローカルで作成したエクセルファイルをアップデートしました。スプレッドシートとGASを作成しました。
スプレッドシート
A1セルに値を入力。
エクセル
A1セルに値を入力。エクセル形式の場合、タイトルの横に「.XLSX」が表示されます。
GoogleAppsScript
スプレッドシートのセルの値を取得する関数と、エクセルのセルの値を取得する関数を作成しました。
GASの実行
実行してみたところ、スプレッドシートのセルの値は取得できましたが、エクセルはエラー終了しました。
Exception: Service Spreadsheets failed while accessing document with id —-
やはり、エクセルはスプレッドシートに変換してないと、参照できません。
GASでエクセルをスプレッドシートへ変換する
手動でエクセルをスプレッドシートに変換することもできますが、Google Drive APIを利用すると、プログラムからエクセルをスプレッドシートに変換できます。Google Drive APIとは「Google Drive」の「API」です(そのまま)。つまり、「Google Drive」をプログラムで操作するための公開している「API」です(そのまま)。
Drive.Files.insertで、エクセルから新規スプレッドシートを作成可能です。
Drive.Files.insert({
'mimeType': 'application/vnd.google-apps.spreadsheet',
'parents': [{ 'id': dirId }],
'title': 'NewExcel'
}, content);
実行してみた
実際のIDを入力して、実行してみました。
ReferenceError: Drive is not defined でエラー終了しました。GoogleAppsScriptの標準ではGoogle Drive APIは利用できません。
GASでGoogle Drive APIを有効にする
Apps Script プロジェクトを開きます。
左側の [エディタ] code をクリックします。
左側の [サービス] の横にある [サービスを追加] add をクリックします。
高度な Google サービスのなかから「Drive API」選択し、[追加] をクリックします。
サービスに下にDriveが追加されます。コードの補完が可能になります。
実行してみた
正常に終了し、エクセルファイルからスプレッドシートに変換できました。
GASから、ファイル名でスプレッドシートを取得して、操作可能になります。
エクセルから変換するたびにスプレッドシートが作成されるために、過去のスプレッドシートは削除してから、変換しましょう!
生成したスプレッドシートのIDをすぐに取得
Drive.Files.insertの戻り値はfileのオブジェクトのため、スプレッドシートのIDが取得できます。すぐにスプレッドシートの内容を読み取ることもできます。
GASで値を取得後、すぐに削除もできます。
Drive APIはGASだけではなく、JavaやPHP、Python、Javascript、Goから利用できます。
以上です。
ディスカッション
コメント一覧
まだ、コメントがありません