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

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

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

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


  1. Option Explicit  
  2.    
  3. if Wscript.Arguments.Count > 0 then  
  4.  dim xmlData, enNoteBookNameOpt  
  5.  dim objStream  
  6.   
  7.  ' 作成先ノートブック(第2引数)  
  8.  if Wscript.Arguments.Count >= 2 then  
  9.   enNoteBookNameOpt = " /n" & Wscript.Arguments(1)  
  10.  end if  
  11.   
  12.  ' 入出力ファイル名  
  13.  dim srcFilename, dstFilename  
  14.  srcFilename = Wscript.Arguments(0)  
  15.  dstFilename = createTempFilename()  
  16.   
  17.  ' 元endxデータ読み込み  
  18.  set objStream = CreateObject("ADODB.Stream")  
  19.  objStream.Charset = "UTF-8"  
  20.  objStream.Open  
  21.   objStream.LoadFromFile srcFilename  
  22.   xmlData = objStream.ReadText(-1)  
  23.  objStream.Close  
  24.  set objStream = Nothing  
  25.   
  26.  ' 文字列置換  
  27.  xmlData = replaceStr(xmlData)  
  28.   
  29.  ' enexデータ書き込み  
  30.  set objStream = CreateObject("ADODB.Stream")  
  31.  objStream.Charset = "UTF-8"  
  32.  objStream.Open  
  33.   objStream.WriteText xmlData  
  34.   objStream.SaveToFile dstFilename, 2  
  35.  objStream.Close  
  36.  set objStream = Nothing  
  37.   
  38.  ' enscript 実行  
  39.  dim Commandline  
  40.  Commandline = "enscript importNotes /s " & dstFilename & enNoteBookNameOpt  
  41.  dim objShell  
  42.  set objShell = CreateObject("WScript.Shell")  
  43.   objShell.Run Commandline, 0, true  
  44.   
  45.  ' 一時ファイル削除  
  46.  deleteFile dstFilename  
  47. end if  
  48.   
  49. ' -------------------------  
  50.   
  51. function createTempFilename()  
  52.  Dim objFSO  
  53.  Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")  
  54.      createTempFilename = objFSO.GetSpecialFolder(2) & "\" & objFSO.GetTempName()  
  55.  Set objFSO = Nothing  
  56. end function  
  57.   
  58. sub deleteFile(filename)  
  59.  Dim objFSO  
  60.  Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")  
  61.   objFSO.DeleteFile filename, True  
  62.  Set objFSO = Nothing  
  63. end sub  
  64.   
  65. ' 置換  
  66. function replaceStr(xmlData)  
  67.  ' 置換したい文字をココに記載  
  68.  xmlData = Replace(xmlData, "%DATETIME%", FormatDateTime(Now, 1))  
  69.  xmlData = Replace(xmlData, "%YEAR%", Year(Now))  
  70.  xmlData = Replace(xmlData, "%MONTH%", Month(Now))  
  71.  xmlData = Replace(xmlData, "%MONTH0%", Right("0" & Month(Now), 2)) ' ゼロ埋め  
  72.  xmlData = Replace(xmlData, "%DAY%", Day(Now))  
  73.  xmlData = Replace(xmlData, "%DAY0%", Right("0" & Day(Now), 2)) ' ゼロ埋め  
  74.  xmlData = Replace(xmlData, "%HOUR%", Hour(Now))  
  75.  xmlData = Replace(xmlData, "%HOUR0%", Right("0" & Hour(Now), 2)) ' ゼロ埋め  
  76.  xmlData = Replace(xmlData, "%MINUTE%", Minute(Now))  
  77.  xmlData = Replace(xmlData, "%MINUTE0%", Right("0" & Minute(Now), 2)) ' ゼロ埋め  
  78.   
  79.  replaceStr = xmlData  
  80. end function  

コメント