パスワードの生成
下記スクリプトで、英数字、記号(スペースを除く)をランダムに混ぜて10桁のパスワードを生成します。
function generatePassword() {
var first = '!'.charCodeAt();
var last = '~'.charCodeAt();
var password = '';
for (var i = 0, max = 10; i < max; i += 1) {
var code = first + (Math.random() * (last - first) | 0);
password += String.fromCharCode(code);
}
return password;
}
パスワードに使用している文字列は、下記の通りです。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}
おまけ
パスワード生成後、クリップボードにコピーする
クリップボードへコピーするスクリプトは下記になります。
Range API を使っているので、IE9 以降、Edge、Chrome、Firefox、Safari は対応しています。
var password = generatePassword();
var elem = document.createElement('span');
elem.style.opacity = 0;
elem.textContent = password;
document.body.appendChild(elem);
var range = document.createRange();
range.selectNode(elem);
getSelection().removeAllRanges();
getSelection().addRange(range);
document.execCommand('copy');
document.body.removeChild(elem);
alert('以下のパスワードをクリップボードにコピーしました。\n\n' + password);
ブックマークレット
下記文字列をコピーしてブックマーク URL に設定してください。
javascript:(function(){for(var a,b="!".charCodeAt(),c="~".charCodeAt(),d="",e=0;10>e;e+=1)d+=String.fromCharCode(b+(Math.random()*(c-b)|0));a=d;var f=document.createElement("span");f.style.opacity=0;f.textContent=a;document.body.appendChild(f);var g=document.createRange();g.selectNode(f);getSelection().removeAllRanges();getSelection().addRange(g);document.execCommand("copy");document.body.removeChild(f);
alert("\u4ee5\u4e0b\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f\u3002\n\n"+a);})()
スプレッドシートに組み込む
スプレッドシートでパスワード管理している場合は、メニューバーから提供するのもありかと思います。パスワードの生成は記事冒頭にある generatePassword
と同一内容です。
※ スプレッドシートでパスワード管理を推奨する内容ではありません、管理は自己責任でお願いします。
function onOpen(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var menus = [
{name: 'パスワードの自動生成(選択中のセルに書き込まれます)', functionName: 'writePasswordToActiveRange'}
];
sheet.addMenu('スクリプト', menus);
}
function writePasswordToActiveRange(){
var range = SpreadsheetApp.getActiveRange();
if (range.getValue() === '' || Browser.msgBox('現在のセルの内容を上書きしますか?') === 'ok') {
range.setValue(generatePassword());
}
}
function generatePassword() {
var first = '!'.charCodeAt();
var last = '~'.charCodeAt();
var password = '';
for (var i = 0, max = 10; i < max; i += 1) {
var code = first + (Math.random() * (last - first) | 0);
password += String.fromCharCode(code);
}
return password;
}
以上です。