0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GoogleDriveを使ってExcelからPDFへ変換する

Last updated at Posted at 2019-02-12

はじめに

ASTERIA Warpを使って「ExcelからPDFへ変換」を考えてみました。

まずExcelファイルをそのままPDFファイルへ変換するようなコンポーネントは現在用意されていません。
”変換(エクスポート)”ではないですがExcelPOIInputとPDFコンポーネントを使って読み込んだExcelファイルのデータをもとにPDFデータを作ることは思いつきます。
「ExcelのPDFエクスポート機能を使ったVBAプログラム」を自作してExeコンポーネントで実行 もありますが今回はGoogleDriveを使ってExcelからPDFヘ変換(エクスポート)する方法を考えてみました。

環境

  • OS: Windows10
  • Java:1.8.0.191
  • ASTERIA Warp : 1812

フロー

GoogleDriveアダプターのGoogleDriveSQLCallを使います。
完成したフローはこんな感じです。

gdrive01.png

大まかには
GoogleDriveへアップロード → (アップロードしたIdの取得) → GoogleDriveからダウンロード → アップロードしたファイルの削除 といった感じです。

ダウンロード - GoogleDriveSQLCall

gdrive02.png

まずは肝となるダウンロード部分のGoogleDriveSQLCallから。
ストアドプロシージャのDownloadFileを使いました。
記述方法はCData Software Inc.社のオンラインドキュメントを参考にしています。

「CData JDBC Driver for Google Drive 2018J」
[データモデル]-[ストアドプロシージャ]-[DownloadFile]
http://cdn.cdata.com/help/GGD/jdbc/pg_sp-downloadfile.htm

プロシージャのInput

Name Type 説明
Id String ダウンロードするリソースのId
FileFormat String ファイルの保存時に適用されるファイル形式
LocalFile String 保存先のローカルファイルパス
Encoding String LocalFile インプットが空白の場合に使用されるエンコード
Overwrite String 保存先のファイルを上書きするかどうか

にあわせて以下のような設定にしました。

実行する処理:ストアド実行(結果なし)
SQL文:{ call DownloadFile(?Id?,?FileFormat?,?LocalFile?,?Encoding?,?Overwrite?)}

gdrive03.png

SQLパラメーター:

gdrive04.png

「FileFormat」にはapplication/pdfを指定してます。

「Id」はひとまずブラウザからURLに埋め込まれているファイルのIdを確認してセットしてもOKだと思います。

gdrive05.png

エクスポートの制限

ExcelをGoogleDriveにアップロードしてGoogleDriveSQLCallでpdfに変換しようとすると

Export only supports Google Docs.

というエラーになりました。FileFormatを指定してエクスポートするときはGoogle Docsしかサポートされていないようです。ExcelではなくGoogle スプレッドシートではないとダメなようです。

MIMETypeを確認する

ということでダウンロードするファイルタイプを確認してみます。
ブラウザーからはファイルの詳細の種類で確認できそうです。

gdrive06.png

GoogleDriveGetではFilesテーブルのMIMETypeというフィールドの値で確認できるみたいです。

gdrive08.png

アップロード - GoogleDrivePut

gdrive09.png

上記エクスポートの制限があるので「MIMEType」にGoogleDriveGetで確認できた値application/vnd.google-apps.spreadsheetをセットしてます。
「MIMEType」をセットしておくとアップロード時に適宜、ファイル形式を変換してくれるようです。

<GoogleDrivePutの内容>
gdrive10.png

<直前のマッパーの内容>
gdrive11.png

wordやpptファイルも変換対象にしてみたのでTable関数使って拡張子でセットする値を変えてます。
ParentIdsはアップロード先のフォルダーIdをセットしてみてます。

gdrive16.png

ファイル削除 - GoogleDrivePut

gdrive12.png

アップロードして・・pdfでエクスポートして・・最後にアップロードしたファイルの削除を入れてます。GoogleDrivePutで「実行する処理」をDeleteとしてます。

gdrive13.png

Id取得 - GoogleDriveGet

gdrive14.png

アップロードしたファイルのIdを取得するために今回はアップロード後にもう一度GoogleDriveGetでデータ取得してます。ついでにMIMETypeとか確認するのにも使ってました。

<GoogleDriveGetの内容>
gdrive15.png

<SQL文>

SELECT A.Id,
       A.Name,
       A.MIMEType,
       A.ParentIds,
       B.Name 
  FROM GoogleDrive.Files A LEFT OUTER JOIN GoogleDrive.Folders B ON A.ParentIds = B.Id 
 WHERE A.Trashed = 'false'
   AND  A.Folder = 'false'
   AND  A.Name = ?FileName?
   AND  B.Id = ?ParentId?

おわりに

FileFormatに何も指定しなければそのままのファイル形式でダウンロードできるようです。コネクションの作成手順などは割愛しましたが、GooleDriveSQLCallを使ったpdf変換含めGooleDriveGet、GoogleDrivePutの使い方、勘所などの参考にもなれば幸いです。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?