Google Apps Scriptのプロジェクトを作成する
Google Apps ScriptはGoogleスプレッドシート(3)Google Apps Scriptを使ってマクロが作れる-p--qでもちょっと使いました。
今回はGoogleドライブでスクリプトを作成します。
Googleの複数アカウントでログインしているときにアカウントを切り替えてプロジェクトを作成しても常にデフォルトアカウントでしかプロジェクトを作成できませんでした。
なので、デフォルトアカウント以外でプロジェクトを作成したいときは他のアカウントはすべてログアウトしてから作業します。
Googleドライブで新規 ー> その他 ー> Google Apps Script。
GoogleドライブにあるMS OfficeのドキュメントファイルをGoogleドキュメントに変換するスクリプトをつくるので、プロジェクト名はBatchConverterにしました。
グローバルオブジェクトDriveを有効にする
Google Workspaceサービスだけではやりたいことができなかったので、Advanced GoogleサービスであるグローバルオブジェクトDriveを使えるようにします。
スクリプトエディタで、リソース ー>Googleの拡張サービス。
Google Apps Scriptのプロジェクト名を設定してなければまずはプロジェクト名を設定のダイアログがでてきますので、プロジェクト名を設定します。
Cloud Console Terms of Serviceをクリックします。
Google Cloud Platformにつながるので、利用規約に同意します、にチェックをつけて「同意して続行」をクリックします。
再度スクリプトエディタに戻って再度、リソース ー>Googleの拡張サービス。
Drive APIをONにして、OKをクリックするとグローバルオブジェクトDriveが有効になります。
Drive Activity APIというのも見えますが、 これは廃止予定のAPIです。
Google Apps Scriptを実行する権限を付与する
Googleドライブに対してアクセスできるようにします。
BathConverterというスクリプトを実行するとします。
実行ボタンをクリックします。
「許可を確認」をクリック。
適用するGoogleドライブのアカウントを選択すると次のダイアログがでてきます。
「詳細」をクリック、すると下にさらに文章が出現します。
「BatchConverter(安全ではないページ)移動」をクリック。
「許可」をクリック。
これで実行されます。
実行結果をみる
このような表示がでてくるもののログはリアルタイムで表示されません。
実行中でも表示 ー> ログ、で出力をみることはできますが手動で更新しないとリアルタイムではみれないようです。
右下に出てくる「更新」をクリックすると表示が更新されます。
しかしこの画面のままでは「実行中」が「完了」には変わりませんでしたので、ログの出力が増えないときは、エディタからログを開き直したところステータスが「完了」になっていました。
アクセス権の削除の方法
スクリプトに付与したアクセス権を削除するには右上にあるアカウント名の丸いアイコンをクリック ー> Googleアカウントを管理。
左のセキュリティをクリック。
下にスクロールしてこのサードパーティによるアクセス管理の部分のBatchConveterをクリックします。
BathConveterをクリックすると「アクセス権を削除」ボタンが出てくるのでこれをクリックします。
OKをクリックするとアクセス権が削除されます。
Google Apps Scriptのお勉強
適当な参考ページが見つけられなくてスクリプトを書くのはなかなか苦労しました。
V8 runtime
V8 Runtime Overview | Apps Script | Google Developers
最新のGoogle Apps ScriptはChromeやNode.jsと同じV8 runtimeを使っています。
以前使われていたES5との比較が書いてありますが、いまはもうMDNのランタイムとあまりかわらないかもしれません。
Apps Scriptサービス
Reference overview | Apps Script | Google Developers
Apps Scriptのサービスには3種類あります。
Google Workspaceサービス
Googleドライブなど各Googleアプリ固有のAPI(Google Workspace API)を使ったサービスです。これだけでなんとかなると思いましたが、うまくできませんでした。
Advanced Googleサービス
汎用的なGoogle APIを各Googleアプリ向けにサービスにしたものです。使用するには有効にする必要があります。今回のスクリプトの作成にはこれが必要でした。
Scriptサービス
Googleアプリに直接関連付けられていないサービスです。
今回はEnum MimeTypeを使って取得するファイルを指定しました。
Googleドライブのサービス
各サービスはグローバルオブジェクトとして利用できます。
グローバルオブジェクトDriveApp
Class DriveApp | Apps Script | Google Developers
GoogleドライブのGoogle Workspaceサービスです。
getAs(contentType)メソッドでEnum MimeTypeにある形式に変換できるかと思いましたが、いまのところこのメソッドではPDFにしか変換できないようです。
createFile(name, content, mimeType) メソッドでは10MBまでのファイルしか作成できないので、これも使いませんでした。
グローバルオブジェクトDrive
Advanced Drive Service | Apps Script | Google Developers
GoogleドライブのAdvanced Googleサービスです。
使用できるGoogle Drive APIはAPI Reference | Google Drive API | Google Developersにあるものです。 Google Drive APIにはv2とv3の2つのバージョンがあって、Driveオブジェクトが使っているのはv2のようです。どこにもそうは書いていませんが、Advanced Drive Serviceにあるサンプルはv2を使ったものが載っててv3の例がでてきませんので。
javascript - Using Drive API / DriveApp to convert from PDFs to Google Documents - Stack Overflow
このページがとても参考になりました。Drive API v3の例も載っています。
0 件のコメント:
コメントを投稿