サクラエディタの達人を目指して

テキストエディタ『サクラエディタ』についての使い方を書いた個人サイトです

ユーザ用ツール

サイト用ツール


sakurapro:tips:macro.html


便利マクロを書いていきます。

ファイル新規作成した瞬間にファイル保存

サクラエディタを使って長い期間経過しますが、4回程度完全にオペレーションができなくなるということが発生したのと、 無題としてタブで開いていた数十のタブが復旧できなくなるということがおきたことで、開いた瞬間に保存するマクロを探したところ見つかった。

※ 突然サイト消えることを懸念してメモ記載

手順1:スクリプトの準備

// saveByDate.js
// https://gist.github.com/RYLSnmm/432a35eb3f885722a4f95e8f0ef9df6b
// ↑を参考にして、
// https://zenn.dev/creationup2u/articles/ce21c793eb4581
// ↑から、引用
(function() {
    if (Editor.GetFilename() != "") { return; }

    var wsh_shell = new ActiveXObject("WScript.Shell");
    var DEFAULT = {
        savedir: wsh_shell.ExpandEnvironmentStrings("%USERPROFILE%") + "\\Documents\\sakura\\{{YYYY}}\\{{MM}}",
        filename_template: "{{YYYY}}{{MM}}{{DD}}_{{HH}}{{mm}}{{ss}}.txt",
        charset: "UTF-8",
        linebreak: "CRLF"
    };

    var savedir = createFromTemplate(DEFAULT.savedir, getNowForTemplate());
    var filename_template = DEFAULT.filename_template;
    var charset = DEFAULT.charset;
    var linebreak = DEFAULT.linebreak;

    var number = Editor.ExpandParameter("$n");
    var filename = createFromTemplate(filename_template, getNowForTemplate(), {number: number});
    var path = savedir + "\\" + filename;
    var fso = new ActiveXObject("Scripting.FileSystemObject");

    //保存先がなかったら作る
    createFolder(savedir)
    Editor.FileSaveAs(path, charset, linebreak);

    function createFolder(folderpath) {
    // フォルダ存在チェック
        if (!fso.FolderExists(folderpath)) {
            if (fso.GetParentFolderName(folderpath)) {
                // フォルダが存在しなかったので親フォルダを作成
                createFolder(fso.GetParentFolderName(folderpath));
                // フォルダ生成
                fso.CreateFolder(folderpath);
            }
        }
    }


    function createFromTemplate(tstr /*, ...args*/) {
        var obj = mergeObjects(Array.prototype.slice.call(arguments, 1));
        return tstr.replace(/\{\{(.*?)\}\}/g, function(_, name) {
            return obj[name] || "";
        });
    }
    function mergeObjects(objects) {
        var result = {};
        for (var i = 0; i < objects.length; i++) {
            var obj = objects[i];
            for (var k in obj) {
                if (obj.hasOwnProperty(k)) {
                    result[k] = obj[k];
                }
            }
        }
        return result;
    }
    function getNowForTemplate() {
        var d = new Date();
        return {
            YYYY: padLeft(d.getFullYear(), 4),
            MM: padLeft(d.getMonth() + 1, 2),
            DD: padLeft(d.getDate(), 2),
            HH: padLeft(d.getHours(), 2),
            mm: padLeft(d.getMinutes(), 2),
            ss: padLeft(d.getSeconds(), 2)
        };
    }
    function padLeft(value, len, char) {
        char = char || "0";
        var padding = Array.apply(null, Array(len + 1)).join(char);
        return (padding + value).slice(-len);
    }
})();

%USERPROFILE%\AppData\Roaming\sakura\ に以下のコードを任意の名前で保存。

手順2:マクロの有効化

サクラエディタ > 設定 > 共通 > マクロ から先程のマクロを指定した後 自動実行にチェックを入れ[設定]ボタンを押下して設定を反映する。

画像

手順3:新規作成

することで、自動的に保存された状態でファイルが開かれる

補足:ファイル自動保存

これはサクラエディタの標準機能ですが サクラエディタ > 設定 > 共通 > ファイルから 数分おきに自動保存を行う設定もあります。

画像


sakurapro/tips/macro.html.txt · 最終更新: by anzadmins

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki