見出し画像

【GAS】Google Apps Script 活用事例 差し込み文書の作成をもっと簡単に

今まで一番読まれているnote記事なんですが、スクリプトが結構長いし、マクロを初めて使ってみようという人には、ちょっとハードルが高いかなと思うようになりました。

そこで今回は、趣旨を変えてライブラリを使用して、差込文書作成をもっと簡単に実現しよう!!というお話です。


ライブラリを使ってみよう

エディターを開く
プラスマークをクリック

スクリプトID

18rg2maFYXNmPmB2R-8s3UuFG850j5OLw4WBvcOrghzRMlfVbQWDgOVvZ
スクリプトIDをペーストして検索をクリック
追加をクリック

コードを実行する前の準備

スプレッドシートの値を差し込む場所をドキュメント内に指定する

半角の{}で囲ったものをプレイスホルダーと言います。
keys:['id', 'name', 'address'],

必ずkeysの中身とGoogle Documentのプレイスホルダーの文言が一致するようにしてください。

また、headerNamesはGoogle Spreadsheetの見出し行の項目名を配列に入れてください。表の中から差込に必要な列を取捨選択するために指定します。

headerNames:['ID', '氏名', '住所'], 

シートの値

シートの値

シートについては、上記のように見出し行を1行目に設定してください。
また、セルの結合がある場合は、誤作動の原因になるため原則避けてください。

プレイスホルダーの置換後

値差込後の文書

このような感じでプレイスホルダーが置換されます。請求書、送付状などなど色んな用途で使えるかと思います。
ちなみに個人情報はダミー作成サイトのお世話になりました。

ログの出力結果

置換対象とシートの値がペアになった配列が生成される

{id} =>  JP8488 
{name} => 木口直子
{address} => 千葉県野田市….

プレイスホルダーの内容がシートの値で書き換えられます。

作成されたファイル名

原本

コードサンプル・実装例

function myFunction() {
  const month = new Date().getMonth() + 1;
  console.log(`処理対象: ${month}月`);

  const info = {
    sheetUrl:         'https://docs.google.com/spreadsheets/d/***********', //スプレッドシートのURL
    fileName:         `{id}_{name}_${month}月分_給与明細`, //複製後のファイル名
    keys:             ['id', 'name', 'address'], //見出し行の項目名と一致するように id => 'ID'
    headerNames:      ['ID', '氏名', '住所'],
    templateFileUrl: 'https://docs.google.com/document/d/************', //Google Documentsで作成した原本のURL
    folderUrl:       'https://drive.google.com/drive/folders/**********' //複製したファイルの保存先のURL
  }

  nepia_infinity.duplicateReplacedTemplate(info);
}

onOpenと一緒に使うと便利

function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('追加メニュー')
  .addItem('差込文書の作成', 'myFunction')
  .addItem('サブメニュー', 'myFunction2')
  .addToUi();
}
上記のコード実行時のキャプチャ

自身で書いたスクリプトをUI操作だけで行えるため便利です。

ライブラリの詳細

ゼロから書くよりはだいぶ短くなったかな…..と思います。
GASの場合は、Pythonなどと異なり実務で使い倒せるライブラリが少ないのと、あったとしても開発が止まっていることがしばしば….。

そういうわけで自分自身でライブラリを作ってしまいました。
採用事務や労務などの実務経験を元に便利な処理などを追加しています。
8月18日現在で、約70くらいの処理を用意しています。盛りだくさんです。

今後も必要に応じて追加していくので、こんなのが欲しいというリクエストがあれば、X(Twitter)などで絡んでください!!




この記事が気に入ったらサポートをしてみませんか?