業務の隙間を埋める技術メモ。

「それ、作れるか?」より 「それ、作って大丈夫か?」を考えたい。 業務で“ちゃんと使える”かどうかを、 実際に手を動かして確かめたログを残しています。

ブックマークレットでNetSuiteをちょい便利にしてみた話(サンプルコード付き)

最近、「ちょっとした不便」を解消する目的でブックマークレットをいくつか試してみました。
ブラウザだけで完結する手軽さがあり、拡張機能を作るほどでもないけれど、毎回手作業なのは面倒…という場面にちょうどよいと感じています。

今回は、実際に試してみた内容に加えて、簡単なサンプルコードも交えながらまとめてみます。


まずは最小構成(Hello World)

ブックマークレットはこんな感じで書けます。

javascript:(function(){
  alert('Hello World');
})();

これをブックマークのURL欄に貼り付けるだけで、クリック時に実行されます。
「とりあえず動くもの」を作るには十分です。


1. 画面内の金額を合計する

やりたかったこと

一覧画面やサブリストの合計をすぐに把握したい

サンプルコード

javascript:(function(){
  let sum = 0;
  document.querySelectorAll('body *').forEach(el => {
    const text = el.textContent.trim();
    if (/^[0-9,]+$/.test(text)) {
      sum += parseInt(text.replace(/,/g, ''), 10);
    }
  });
  alert('合計: ' + sum.toLocaleString());
})();

ポイント

  • カンマ付き数値に対応

  • 雑に拾っているので「ざっくり確認」用途向け

使ってみた感想

ワンクリックで合計が出るので、確認作業がかなり楽になります。


2. 一覧をCSV化する

やりたかったこと

画面の表データをそのまま持ち出したい

サンプルコード

javascript:(function(){
  let csv = '';
  document.querySelectorAll('table tr').forEach(tr => {
    let row = [];
    tr.querySelectorAll('th, td').forEach(td => {
      row.push('"' + td.innerText.replace(/"/g, '""') + '"');
    });
    csv += row.join(',') + '\n';
  });

  const blob = new Blob([csv], { type: 'text/csv' });
  const a = document.createElement('a');
  a.href = URL.createObjectURL(blob);
  a.download = 'export.csv';
  a.click();
})();

ポイント

  • 表をそのままCSV化

  • 軽いデータ加工用途に便利

使ってみた感想

標準エクスポートよりも気軽に使えます。


3. ステータスの色分け

やりたかったこと

未処理・完了などを視覚的に判断したい

サンプルコード

javascript:(function(){
  document.querySelectorAll('td').forEach(td => {
    if (td.innerText.includes('未処理')) {
      td.style.backgroundColor = '#ffcccc';
    }
    if (td.innerText.includes('完了')) {
      td.style.backgroundColor = '#ccffcc';
    }
  });
})();

ポイント

  • シンプルに文字判定

  • CSSを上書きして視認性を向上

使ってみた感想

スクロールしても状態がすぐ分かるようになり、想像以上に快適です。


4. 入力補助(テスト用)

やりたかったこと

テスト時の入力を自動化したい

サンプルコード

javascript:(function(){
  document.querySelectorAll('input').forEach((input, i) => {
    if (input.type === 'text') {
      input.value = 'test_' + i;
    }
    if (input.type === 'email') {
      input.value = 'test@example.com';
    }
  });
})();

ポイント

  • inputのtypeで分岐

  • テストデータを一括投入

使ってみた感想

入力の手間が減るだけでなく、入力漏れ防止にもなります。


全体的な所感

今回試した内容はいずれも小さな工夫ですが、日々の作業にしっかり効いてくる改善になりました。

特によかった点は以下です。

  • ブラウザだけで完結するため導入が簡単

  • 思いついたらすぐ試せる

  • 影響範囲が限定的で安心


まとめ

「ツールを作るほどではないけれど、毎回少し面倒」と感じる作業は意外と多くあります。
そうした部分にブックマークレットを当ててみると、ちょうどよいバランスで効率化できると感じました。

まずはHello Worldのような簡単なものから試し、少しずつ自分の作業に合わせて育てていくのがよさそうです。
今後も気軽に試しながら、小さな改善を積み重ねていきたいと思います。