きっかけ
私の勤務先の会社ではアジェンダにGoogleドキュメントを使用しております。
その際にGoogleドキュメントに上部に追記する形でアジェンダを残しています。
Googleドキュメントを新たに作成するのは見かけたが追記するパターンは見かけなかったので実装してみました。
目的
現状だと都度アジェンダとなるテンプレートを手動でコピーして行っているので、この手動作業をなくすことを目的としています。また、なるべく時間をかけずに実装することを目的とします。なので多少のレイアウト崩れ等は目をつぶります。
方法検討
パターン①GASにテンプレートとなる文章を埋め込む
→ テンプレートの内容が変わった際に修正が大変そう。
パターン②元となるドキュメントにテンプレートを用意しておく
→ GASでのドキュメント操作が大変そう
パターン③テンプレートを別ドキュメントに用意しておく
→ 新規ファイルを作成する方法を見かけるので容易にできそう
ということで今回は③で実装してみます
準備
テンプレートファイルの準備
内容はなんでもOK
アジェンダを追記するファイルを準備
実装
テンプレートからドキュメントにコピーする
以降のコードはアジェンダを追記するドキュメントのGASに記載してください
/*
* コピー
*/
function insertTaskAssignmentAgenda() {
// テンプレートから内容を取得(https://docs.google.com/document/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit)
const fileId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const templateDocument = DocumentApp.openById(fileId);
// 挿入する行番号
let insertRowNumber = 1;
let document = DocumentApp.getActiveDocument();
// テンプレートからコピー
templateDocument.getBody().getParagraphs().forEach(paragraph => {
let para = paragraph.copy();
if (insertRowNumber == 1) {
// 日時を置換
const title = para.getText().replace("{date}", getDate(0));
document.insertParagraph(insertRowNumber++, title).setAttributes(para.getAttributes()).setFontSize(13).setBold(true);
} else if (para.getType() === DocumentApp.ElementType.LIST_ITEM) {
document.insertListItem(insertRowNumber++, para.getText()).setGlyphType(DocumentApp.GlyphType.BULLET).setAttributes(para.getAttributes());
} else {
document.insertParagraph(insertRowNumber++, para.getText()).setAttributes(para.getAttributes());
}
});
// 区切り線
document.insertHorizontalRule(insertRowNumber++);
}
/*
* 日時
*/
function getDate(addDays = 1) {
const now = new Date();
now.setDate(now.getDate() + addDays);
return Utilities.formatDate(now, 'Asia/Tokyo', 'YYYY-MM-dd');
}
メニューに登録
function onOpen() {
let ui = DocumentApp.getUi();
let menu = ui.createMenu('アジェンダ');
menu.addItem('朝会', 'insertMorningMeetingAgenda');
// アジェンダの数だけメニューに登録
menu.addItem('XXXXX', 'XXXXXXXXXXXXXXXX');
menu.addToUi();
}
問題点
下記のように実行するとなぜか以下の現状が起こったり起こらなかったりする
- リンクは貼られているが書式が反映されない
- 箇条書きの書式が違う
自動作成について
このままでもよいが必要に応じてトリガーを設定すれば全自動で作成するようにできます
まとめ
これでアジェンダを手動でコピーする手間がなくなりました