はじめに
業務日誌、議事録などのテキストを作成する際、テンプレートがあると便利なことがあります。元々は テンプレート_yyyymmdd.txt
みたいなものを用意して都度手動でリネームしていましたが、これをマクロで実現してみようと思って書いてみました。
できたもの(結論)
WSH(JScript)で書いています。文字コードに気をつけてください。私はSJISを使いました。文字コードについては本家のドキュメントも参照してください。
https://sakura-editor.github.io/help/HLP000204.html
// 打ち合わせメモテンプレ作成
// 実行確認
if(MessageBox("エディタの入力内容を全て破棄し、テンプレートを適用します。\r\nよろしいですか?", 1) == 1) {
setTemplate();
}
function setTemplate() {
// 日付関連の文字列生成
var dt = new Date();
var year = dt.getFullYear();
var month = ("00" + (dt.getMonth()+1)).slice(-2);
var day = ("00" + (dt.getDate())).slice(-2);
var week = dt.getDay();
var weekString = ["日","月","火","水","木","金","土"][week];
var today = year + "年" + month + "月" + day + "日" + "(" + weekString + ")";
// 表題
var meetingName = "朝ミーティング";
// 保存先ディレクトリ
var saveDir = "D:\\project01\\ミーティングメモ\\";
// 保存拡張子
var saveExtension = ".md.txt"
// 保存ファイル名
var saveFilename = meetingName + "_" + year + month + day + saveExtension;
// クリア
SelectAll( );
Delete( );
// ヘッダ部
Editor.InsText("\r\n");
Editor.InsText("# " + meetingName + "\r\n");
Editor.InsText(" * " + today + "\r\n");
Editor.InsText("\r\n");
// 議題1
Editor.InsText("## 本日の予定" + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText("\r\n");
// 議題2
Editor.InsText("## XXXチーム報告" + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText("\r\n");
// 議題3
Editor.InsText("## YYYチーム報告" + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText("\r\n");
// 議題4
Editor.InsText("## その他" + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText(" * " + "\r\n");
Editor.InsText("\r\n");
// 名前を付けて保存
FileSaveAsDialog(saveDir + saveFilename);
}
説明
以下はダラダラとした説明です。
日付関連
この辺から拝借してきました。
https://qiita.com/VinceHeart/items/fc554fdee329a49aa928
本文とファイル名にそれぞれの形式で使用します。
ファイル名・表題など
// 表題
var meetingName = "朝ミーティング";
// 保存先ディレクトリ
var saveDir = "D:\\ほげほげプロジェクト\\ミーティングメモ\\";
// 保存拡張子
var saveExtension = ".md.txt"
// 保存ファイル名
var saveFilename = meetingName + "_" + year + month + day + saveExtension;
使いまわしがききやすいように、あえて細かく変数に切り分けています。日付を含むファイル名をここで決めてしまいます。
余談ですが拡張子 .md.txt
は私の最近のお気に入りです。
クリア
// クリア
SelectAll( );
Delete( );
そのまんま
テンプレート本体
// ヘッダ部
Editor.InsText("\r\n");
Editor.InsText("# " + meetingName + "\r\n");
Editor.InsText(" * " + today + "\r\n");
Editor.InsText("\r\n");
// 議題1
Editor.InsText("## 本日の予定" + "\r\n");
Editor.InsText(" * " + "\r\n");
// (以下略)
Editor.InsText()
でドンドコ書いていきます。タイトルやら日付は自動で。他テンプレートもご自身で使いたい議事録や日誌のフォーマットに従ってください。
名前を付けて保存
// 名前を付けて保存
FileSaveAsDialog(saveDir + saveFilename);
テンプレート出力直後に保存してしまうことで、さくらエディタのタイプ別設定が活きて色分けやキーワードハイライトをしてくれます。また、私の場合は自動保存も有効にしています。
実行確認
// 実行確認
if(MessageBox("エディタの入力内容を全て破棄し、テンプレートを適用します。\r\nよろしいですか?", 1) == 1) {
setTemplate();
}
メッセージボックスを出してから実行します。いきなり全消しから始まるので・・・。
おわりに
この記事では紹介しませんが、所定のパスにマクロを保存し、ショートカットキー登録までしてしまうと便利ですね。
以上です。