LoginSignup
6
4

More than 5 years have passed since last update.

Mac のClipMenu にアクション(JavaScript)を追加する

Last updated at Posted at 2013-09-10

目的

ClipMenu のアクションに独自プログラム(末尾のスクリプトサンプル)を追加する。
アクションへのプログラム追加方法は、参考情報を見れば一目瞭然なので割愛して、ココには自分用のサンプルスクリプトを残す。

ClipMenu とは?

  • Mac 用のクリップボード履歴保持ツール。
  • 履歴保持以外にも以下の様な機能があり超絶便利なツール。
    • スニペット登録で、テンプレ的なテキストを登録できる。
    • JavaScript でアクションを登録でき、工夫次第で色々できる。

前提条件

環境

  • OS: Mac OSX 10.8.4
  • ClipMenu 0.4.3

アクションスクリプトサンプル

スクリプト内容

呼び出したアクションで日付入力プロンプトを表示させ、その表示されたプロンプトに日付を入力すると、入力日付が属する月の日付(曜日)と時間のテンプレートテキストをクリップボードに出力する。
後述の出力例とソースみたほうが早い。

何故に作った?

会社にメールで月報とか出すんですが、その中でその月の日毎の勤務時間も報告する必要があり、毎月以下の出力例みたいなのを書くのがめんどくさすぎるので作った。
ついでに、新規にそれ用のツールを作るのでなく、普段よく使うツールでおさめられればなお楽だなと思って、自分にとっては必須のClipMenu のアクションで書くことにした。

出力例

日付入力プロンプトに、"2013/09/11" と入力した場合(日付は何日であろうが構わない):

  • 09/01(日): xx:00-xx:00:
  • 09/02(月): xx:00-xx:00:
  • 09/03(火): xx:00-xx:00:
  • 09/04(水): xx:00-xx:00:
  • 09/05(木): xx:00-xx:00:
  • 09/06(金): xx:00-xx:00:
  • 09/07(土): xx:00-xx:00:
  • 09/08(日): xx:00-xx:00:
  • 09/09(月): xx:00-xx:00:
  • 09/10(火): xx:00-xx:00:
  • 09/11(水): xx:00-xx:00:
  • 09/12(木): xx:00-xx:00:
  • 09/13(金): xx:00-xx:00:
  • 09/14(土): xx:00-xx:00:
  • 09/15(日): xx:00-xx:00:
  • 09/16(月): xx:00-xx:00:
  • 09/17(火): xx:00-xx:00:
  • 09/18(水): xx:00-xx:00:
  • 09/19(木): xx:00-xx:00:
  • 09/20(金): xx:00-xx:00:
  • 09/21(土): xx:00-xx:00:
  • 09/22(日): xx:00-xx:00:
  • 09/23(月): xx:00-xx:00:
  • 09/24(火): xx:00-xx:00:
  • 09/25(水): xx:00-xx:00:
  • 09/26(木): xx:00-xx:00:
  • 09/27(金): xx:00-xx:00:
  • 09/28(土): xx:00-xx:00:
  • 09/29(日): xx:00-xx:00:
  • 09/30(月): xx:00-xx:00:

スクリプト

入力日から月日テンプレ生成.js
//var input = clipText;
var input = prompt('日付入力:yyyy/MM/dd');

// check input date
if (!input){
   return;
}

// check input format yyyy/mm/dd
if (!input.match(/^\d{4}\/\d{2}\/\d{2}$/)) {
    return;
}

// get year
var tyear = input.substring(0,4);
// get month
var tmonth = input.substring(5,7);
if (tmonth.match(/^([0][1-9])$/)) {
    var tmonthnum = tmonth.replace("0","");
} else {
    var tmonthnum = tmonth;
}

// get all date
var alldate = new Date(tyear,tmonthnum,0).getDate();

var w = ["","","","","","",""];

var returnval = new String();
for (var i = 1; i <= alldate; i++) {

    var d = new Date(tyear + "/" + tmonthnum + "/"+ i);

    returnval += "* ";
    returnval += tyear;
    returnval += "/";
    returnval += tmonth;
    returnval += "/";
    returnval += (i < 10)? "0" + i : i;
    returnval += "(";
    returnval += w[d.getDay()];
    returnval += ")";
    returnval += ": ";
    returnval += "xx:00-xx:00";
    returnval += ": ";
    returnval += "\n";
}

return returnval;
6
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4