GASをHackして業務を効率化しよう(Google Docs/DocumentApp)
注意事項と本家
- 2020/11/14 : 準拠
- 2020/11/14時点の下記リファレンスドキュメントを参考に書いています。
- Class DocumentApp | Apps Script | Google Developers
- https://developers.google.com/apps-script/reference/document/document-app
書いた経緯
業務でGoogleのBuisiness suiteを利用している会社は少なくないはず。
しかし、そこにGoogle Apps Script(GAS)を使った効率化を施しているという話は(日本だと)少ないような気がしています。
というわけで、この記事はそんなGASの中でもさらに利用が少ないと思われるDocumentAppを少し掘ろうと記事を書きました。
というか、自分で作業している間のメモみたいなものです。
(ちなみに、執筆時点でDocumentAppについてQiitaで検索を書けても89件しかヒットしませんでした)
用語
- Google Docs
- Googleが提供しているDrive内の文書作成エディタ機能。
- (偏見:出向先の会社がWordを使っていると、まれによく表示やライセンスの関係で問題が発生する)
- GAS
- Google Apps Scriptのこと。JavaScriptを使えるならワリと手軽に、かつ無料でDrive内部のデータを自動化に組み込める。
- (メンターがいればJS初心者の教材としても良いかもしれないけど、いないなら敬遠したい程度の難易度)
- DocumentApp
- Google DocsをGASから操作する時に主軸となるAPIクラス。
- インスタンス
- オブジェクト指向的な用語。「実体」と置き換えるとよさげ。
Google Docsとは
Google DocsはGoogleが提供する文書作成エディタで、いわゆるMSのWordに近い機能を提供してくれます。
ドライブの権限を共有している相手となら、極めて簡単に以下のような恩恵を受ける事ができます。
- 複数ユーザーによる文書のリアルタイム同時編集
- コメントによる非表示データの埋め込み
- バージョン管理(特定のタイミングに巻き戻しする機能、命名も可)
とはいえ、今回の主題はその先です。
「GASを使った自動化でどんな役割を持つのか」をメインとして、その主軸になるDocumentAppまわりについて整理します。
class DocumentApp
このクラスは三つの機能の窓口になっています。
(経由するとブラウザのエディタ上でCtrl+Spaceによる補完ができます)
- Google Docsファイルのインスタンスへのアクセス
- エディタUIインスタンスへのアクセス
- インスタンスとやり取りするための定数(Propertiesとして保持)の提供
(私見:定数の分類、とくにAttributeに関して雑じゃないかな? あと段落のスタイルを定数にした人とはじっくりお話したい)
Google Docsファイル関連
- create(name) : Document
- ドライブ内へのファイル新規作成と、そのインスタンス取得
- openById(id | url) : Document
- ドライブ内ファイルを指定したドキュメントのインスタンス取得
- getActiveDocument() : Document
- 特定のファイルに紐づいている(container-bound)場合のみ利用可能。
- 呼び出しユーザーが開いているファイルのドキュメントを取得。
UI関連
- getUi() : Ui
- 特定のファイルに紐づいている(container-bound)場合は、そのファイルを編集するエディタ内のUser-Interfaceに干渉できる。
- 紐づいていない場合は調べてないです。(暇があればいつか)
定数 : 型情報/判定
- enum ElementType
- 各種インスタンスの型情報を判定する時に使う。
定数 : 段落スタイル
- enum ParagraphHeading
- 段落ごとに設定できる「スタイル(書式に名前を付けたもの)」のデータを扱う際に使う。
- (私見:どうしてWordのような拡張性を持たせなかったのか、とても納得できない)
定数 : 文字列表示位置
- enum TextAlignment
- 行内で文字の上下寄せに関する定数
- enum HorizontalAlignment
- 段落の水平寄せに関する定数
- enum VerticalAlignment
- 埋め込みセル内部における文字列寄せの定数(らしい。こちらも後回し)
- enum PositionedLayout
- 埋め込んだ画像に対して、ドキュメントのテキストがどのように振舞うかを指定。
- PositionedImageに対して、テキストを囲むように画像を表示する場合などに使う。
定数 : その他
- enum GlyphType
- 箇条書きで先頭に表示する数値や丸などを表現する定数。柔軟な表示をしたければ使うかも。
- enum Attribute
- 文字列要素に対する属性的なものをまとめて突っ込んでいる。
- 書式:太字、イタリック、下線、フォント
- 位置:マージン、パディング、スペーシング
- 大きさ:画像の大きさ、セルの大きさ
- 背景色:ドキュメント全体、テーブル、段落
- その他