テキストファイルを読み込んで1行ごとにクリップボードにコピーする。
ファイルのリネームとか一括でしてくれるソフトはありますし、同じようにはるかに便利にコピーできるソフトもあると思いますが、ブラウザで実行できたら便利だと思い作りました。
このページ上でも実行できるといいんですが、ファイルAPIとか使えるのかよくわかりません。
※同じ記事を
使う場合は
以下のソースをコピーしてhtmlファイルとして保存してください。
テキストファイルを1行ずつコピーする
//ファイルの中身を1行毎に収めた配列(グローバル)
var arrayOfContents;
//ファイルが選択されたら一連の関数を呼び出す
document.getElementById("file").addEventListener('change',readFile,false);
//ファイルを読み込んで処理を始める
function readFile(evt){
var f = evt.target.files;
var contents;
var reader = new FileReader();
reader.readAsText(f[0]);
//ファイルが読み込まれたら
reader.addEventListener("load",function(){
contents = reader.result;
//ファイルの中身を改行文字で区切る
arrayOfContents = contents.split(/\r\n|\r|\n/);
makeFields();
addEvents();
},false);
}
//テキストフィールドとコピー用のボタンを作る関数
function makeFields() {
var output = document.getElementById('output');
// リスト要素の作成
var p = document.createElement('p');
p.id = 'form';
var i;
var len = arrayOfContents.length;
for ( i=0; i < len; i++) {
//テキストフィールドの作成
var text = document.createElement("input");
text.type = 'text';
text.id = 'text_' + i;
text.value = arrayOfContents[i];
p.appendChild(text);
// ボタンの作成
var input = document.createElement('input');
input.type = 'button';
input.id = 'btn_' + i;
input.className = "btn";
input.value = (i+1) + "行目をコピー";
p.appendChild(input);
var br = document.createElement("br");
p.appendChild(br);
}
output.appendChild(p);
}
//隣のテキストをクリップボードにコピーする関数
function copyText(n){
document.getElementById("text_" + n ).select();
document.execCommand("copy");
}
//イベントの設定
function addEvents(){
var buttons = document.getElementsByClassName("btn");
var len = arrayOfContents.length;
for (var j = 0; j < len; j++) (function(n) {
buttons[n].addEventListener('click', function() {
copyText(n);
}, false);
})(j);
}
//注意書きを表示
function showNotes(){
var notes = '使用上の注意・ファイルはUTF-8形式に変更してから使ってください';
alert(notes);
}