スキルアップを始める!

【GAS】ブラウザ上でCSVファイルを読み込み特定の条件でフィルタされた行を削除してダウンロードリンクを生成する

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約5分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

以下のコードは、ブラウザ上でCSVファイルを読み込み、特定の条件でフィルターされた行を削除して、ダウンロードリンクを生成する例です。

HTMLコード

条件は「数値が10未満の行」を削除するものとします。CSVファイルのフォーマットが異なる場合は、適宜修正してください。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>CSVフィルター</title>
</head>
<body>
  <input type="file" id="csvfile" accept=".csv"><br>
  <button onclick="filterCSV()">CSVフィルター</button><br>
  <a href="#" id="downloadlink" style="display:none">ダウンロードリンク</a>
  <script>
    function filterCSV() {
      const csvfile = document.getElementById('csvfile').files[0];
      const reader = new FileReader();
      reader.onload = function() {
        const rows = reader.result.split('\n');
        const filtered_rows = [];
        for (var i = 0; i < rows.length; i++) {
          const cells = rows[i].split(',');
          const num = parseInt(cells[0]);
          if (!isNaN(num) && num >= 10) {
            filtered_rows.push(rows[i]);
          }
        }
        const csvdata = filtered_rows.join('\n');
        const csvlink = document.getElementById('downloadlink');
        csvlink.href = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvdata);
        csvlink.download = 'filtered.csv';
        csvlink.style.display = 'block';
      }
      reader.readAsText(csvfile);
    }
  </script>
</body>
</html>

このコードでは、最初の列の数値を取得するために「const num = parseInt(cells[0])」を使用しています。

条件は「num >= 10」となっており、最初の列の数値が10以上の場合に行をフィルタリングします。

CSVファイルを選択するための「input type=”file”」、フィルタリングを実行するための「button onclick」、ダウンロードリンクを表示するための「a href」が定義されています。

フィルタリングは、CSVファイルを行に分割して、各行の最初のセルの数値を取得し、条件に基づいて行をフィルタリングします。

フィルタリング後には、フィルターされた行を結合して新しいCSVファイルを作成し、ダウンロードリンクの「href」属性にセットします。

ダウンロードリンクは、「style.display」を使って初めは非表示になっており、フィルタリングが成功した場合に表示されます。

CSVサンプルデータ

以下は、CSVサンプルデータです。最初の列には数値が、2列目、3列目には文字列が入っています。

7,apple,red
3,banana,yellow
12,orange,orange
9,grape,purple
6,strawberry,red
15,kiwi,green
8,pineapple,yellow
2,lemon,yellow

このデータを「sample.csv」という名前で保存し、先程示したコードでファイルを選択して読み込むことができます。

doGet関数を実行する

GAS側にdoGetでhtmlファイルを作成して開けるようにします。

function doGet() {
  const html = HtmlService.createHtmlOutputFromFile('index');
  return html;
}

GASのスクリプト内にHTMLファイルを作成して、先程のHTMLコードを準備して、デプロイします。

それっぽい感じの画面が出来ました…!

[rml_read_more]

CSVファイルを読み込む

先程のサンプルデータを元に、CSVデータを読み込んでみます。

CSVフィルターを押すと、ダウンロードリンクが表示されました。

ダウンロードして開くと、フィルタ(行が削除)された状態でCSVファイルが作成されています!

まとめ

ファイル選択フォームを持つHTMLファイルに上記のJavaScriptコードを組み込むことで、ブラウザ上でCSVファイルを読み込み、特定の条件でフィルターされた行を削除して、ダウンロードリンクを生成することができます。

作業が効率化されて、便利になりそうです。

URLをコピーしました!