これは便利!選択範囲内のテキストを1行1アイテムとしてコピーする CopyQ スクリプト

f:id:dot-harley:20200110233155j:plain

選択範囲内のテキストを改行で区切ってコピー、つまり1行1アイテムとして CopyQ に保存したい時ってありますよね。

それ CopyQ スクリプトで出来ます!

特徴

  • 1行1アイテムとして CopyQ に保存されます。

  • 空白行は無視されます。

  • 出力先のタブが選べます。定型文の登録に便利。

  • 「もっとスマートなやり方があるよ」という方はぜひコメント欄にお願いします。

免責事項

無保証です。このスクリプトを使用して何らかの損害が発生したとしても、作者は責任を負いません。

不具合の報告はコメント欄にお願いします。直せるかどうか分かりませんが。。。

コード

[Command]
Command="
    copyq:
    if (!copy())
      abort()
    
    // \x9078\x629e\x7bc4\x56f2\x306e\x30c6\x30ad\x30b9\x30c8\x3092\x5909\x6570\x306b\x683c\x7d0d
    var text = str(clipboard())
    // \x51fa\x529b\x5148\x306e\x30bf\x30d6\x540d\x3092\x6307\x5b9a
    var tabNames = tab();
    var selected_index = dialog('.title', '\x3069\x306e\x30bf\x30d6\x306b\x51fa\x529b\x3057\x307e\x3059\x304b\xff1f', '.list:Select', tabNames)
    if (selected_index)
      tab(tabNames[selected_index])
    // \x6587\x5b57\x5217\x3092\x31\x884c\x305a\x3064\x914d\x5217\x306b\x683c\x7d0d\x3059\x308b
    var textArray = text.split(/\\r\\n|\\r|\\n/)
    // \x9006\x9806\x306b\x30b9\x30bf\x30c3\x30af
    for (var i = textArray.length - 1; i >= 0 ; i--){
      if (!textArray[i].trim())
        continue
      insert(0 , textArray[i].trim())
    }"
Icon=\xf24d
InMenu=true
Name=1\x884c\x31\x30a2\x30a4\x30c6\x30e0\x3068\x3057\x3066\x30b3\x30d4\x30fc

使い方

あらかじめ以下の記事を参考に、スクリプトを登録しておきます。

CopyQ に共有スクリプトを追加する方法 - In my mind

あらかじめ CopyQ を起動しておきます。

あらかじめ出力先のタブを作っておきます。

複数行のテキストを選択して CopyQ のトレイアイコンを右クリック。

メニューから「1行1アイテムとしてコピー」を選択。

1行1アイテムとしてコピー

「どのタブに出力しますか?」というダイアログが出てきたら出力先のタブを選択。

出力先のタブを選択

出力先のタブを開くと1行1アイテムとしてコピーされてます。

1行1アイテムとしてコピーされてます

参考

Scripting API — CopyQ documentation

JavaScript - 配列を逆順にループする方法 | ITライフ


アイキャッチ画像提供:A MacBook with lines of code on its screen on a busy desk photo – Free Computer Image on Unsplash