【Google Apps Script(GAS)】ドキュメントのヘッダー・フッターを自動で付与する

Google Apps

Google Documentでヘッダーセクションとフッターセクションがあることをご存知でしょうか?

Google Documentのヘッダーセクション

ヘッダーであれば会社名やロゴ、資料名などが書いてあるかと思います。

複数のDocumentに同じヘッダーセクション・フッターセクションを加える場合にスクリプトを活用すると素早く実行できます。

処理概要

スポンサーリンク

任意のフォルダからGoogle Documentの一覧を取得し、取得したGoogle Document全てにヘッダーとフッターを追加します。

今回作成したプログラムでは、フォルダの指定やヘッダー・フッターに追加する文章はプログラム内で指定しています。

使用するサービス

DocumentApp

Googleドキュメントを操作するためのサービスクラスです。今回のプログラムではドキュメントを取得し、取得したドキュメントにヘッダーとフッターを追加します。

openById()でドキュメントを取得します。取得したDocumentクラスを使用して、ヘッダーとフッターを追加します。

var document = DocumentApp.openById(file.getId());

ドキュメントにヘッダーを追加するにはaddHeader()を使用します。setText()でヘッダーにテキストを設定できます。

ドキュメントにフッターを追加するにはaddFooter()を使用します。ヘッダーと同じようにsetText()でテキストを設定できます。

// Google Documentにヘッダーを追加する
document.addHeader().setText('プログラムで追加 - ヘッダー');
// Google Documentにフッターを追加する
document.addFooter().setText('プログラムで追加 - フッター');

DriveApp

Google Driveを操作するためのサービスクラスです。今回のプログラムでは指定のフォルダからGoogle Documentを取得するために使用しています。

folder.searchFiles()でmimeTypeをGoogle Documentに設定することでGoogleドキュメントだけを取得できます。

// 指定フォルダからGoogle Documentを取得する
var folder = DriveApp.getFolderById(__FOLDER_ID__);
var files = folder.searchFiles('mimeType = "' + MimeType.GOOGLE_DOCS + '"');

プログラム全体

スポンサーリンク

document.addHeader()はすでにヘッダーが設定されていると例外が発生するのでtry〜catchで囲みます。

function myFunction() {
  // 指定フォルダからGoogle Documentを取得する
  var folder = DriveApp.getFolderById(__FOLDER_ID__);
  var files = folder.searchFiles('mimeType = "' + MimeType.GOOGLE_DOCS + '"');
  while(files.hasNext()) {
    var file = files.next();
    var document = DocumentApp.openById(file.getId());
    
    try {
      // Google Documentにヘッダーを追加する
      document.addHeader().setText('プログラムで追加 - ヘッダー');
      // Google Documentにフッターを追加する
      document.addFooter().setText('プログラムで追加 - フッター');
    } catch(e) {
      // すでにヘッダー・フッターが設定されている場合、例外となる
      Logger.log(file.getName() + ' - ' + e.message);
    }
  }
}

まとめ

Google Apps Scriptを使って、ヘッダー・フッターを追加するプログラムを書いてみました。

いろいろとドキュメントを作った後で、まとめてヘッダーを追加する時に使えるプログラムかなと思います。

これを応用してすでに設定されている場合は、変更するようにして、一括で変更できるプログラムに仕上げるのもありかなと思います。

案外と使えるかもしれません♪