Evernote にテンプレート機能ができたけど、日付などの変動値が入らないのでスクリプトを作成

Evernote にテンプレート機能ができたけど、これって単なるノートのコピーであって、日付とか変動するものを入れられないんですね(いまのところ)

ということで、下記を自動化する vbスクリプトを作成してみた
エクスポートしておいたノートを読み込む→文字列を置換→別名で保存(temp)→enscriptでノートを追加

使うまでの準備
  1. 下記のスクリプトをどこかへ保存(ここでは EnImportTemplate.vbs として説明)
  2. テンプレートとなるノートを作成し、enex形式でエクスポート
  3. エクスポートした enexファイルをテキストエディタで開き、置換したい文字列を入力、保存
    ※置換文字列は、スクリプトの最後の方に各自定義する
  4. vbs を実行 ←次回からココだけ
    例>EnImportTemplate.vbs enexファイル 追加先ノートブック名(オプション)
エクスポートした enexファイルの作成日、更新日を利用したくない時は enex内のタグを削除しておく
作成日: <created>~</created>
更新日: <updated>~</updated>


Option Explicit
 
if Wscript.Arguments.Count > 0 then
 dim xmlData, enNoteBookNameOpt
 dim objStream

 ' 作成先ノートブック(第2引数)
 if Wscript.Arguments.Count >= 2 then
  enNoteBookNameOpt = " /n" & Wscript.Arguments(1)
 end if

 ' 入出力ファイル名
 dim srcFilename, dstFilename
 srcFilename = Wscript.Arguments(0)
 dstFilename = createTempFilename()

 ' 元endxデータ読み込み
 set objStream = CreateObject("ADODB.Stream")
 objStream.Charset = "UTF-8"
 objStream.Open
  objStream.LoadFromFile srcFilename
  xmlData = objStream.ReadText(-1)
 objStream.Close
 set objStream = Nothing

 ' 文字列置換
 xmlData = replaceStr(xmlData)

 ' enexデータ書き込み
 set objStream = CreateObject("ADODB.Stream")
 objStream.Charset = "UTF-8"
 objStream.Open
  objStream.WriteText xmlData
  objStream.SaveToFile dstFilename, 2
 objStream.Close
 set objStream = Nothing

 ' enscript 実行
 dim Commandline
 Commandline = "enscript importNotes /s " & dstFilename & enNoteBookNameOpt
 dim objShell
 set objShell = CreateObject("WScript.Shell")
  objShell.Run Commandline, 0, true

 ' 一時ファイル削除
 deleteFile dstFilename
end if

' -------------------------

function createTempFilename()
 Dim objFSO
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
     createTempFilename = objFSO.GetSpecialFolder(2) & "\" & objFSO.GetTempName()
 Set objFSO = Nothing
end function

sub deleteFile(filename)
 Dim objFSO
 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
  objFSO.DeleteFile filename, True
 Set objFSO = Nothing
end sub

' 置換
function replaceStr(xmlData)
 ' 置換したい文字をココに記載
 xmlData = Replace(xmlData, "%DATETIME%", FormatDateTime(Now, 1))
 xmlData = Replace(xmlData, "%YEAR%", Year(Now))
 xmlData = Replace(xmlData, "%MONTH%", Month(Now))
 xmlData = Replace(xmlData, "%MONTH0%", Right("0" & Month(Now), 2)) ' ゼロ埋め
 xmlData = Replace(xmlData, "%DAY%", Day(Now))
 xmlData = Replace(xmlData, "%DAY0%", Right("0" & Day(Now), 2)) ' ゼロ埋め
 xmlData = Replace(xmlData, "%HOUR%", Hour(Now))
 xmlData = Replace(xmlData, "%HOUR0%", Right("0" & Hour(Now), 2)) ' ゼロ埋め
 xmlData = Replace(xmlData, "%MINUTE%", Minute(Now))
 xmlData = Replace(xmlData, "%MINUTE0%", Right("0" & Minute(Now), 2)) ' ゼロ埋め

 replaceStr = xmlData
end function

コメント