2022/02/09に更新

【GASで時短】選択範囲のデータをCSVで出力する

スプレッドシート小技

スプレッドシートの選択している範囲だけをCSVで出力するGoogle Apps Scriptです。CSVで出力したい・・・けどシート全体をCSVでダウンロードするのは面倒という方へ。

こんな悩みを解決します


  • スプレッドシートの内容をCSVで出力したい。
  • 一部だけCSV化したいが、シート全体をCSVダウンロードして加工するのは面倒。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • シートで選択されている範囲を、CSV化して画面上に表示します。
  • CSV化は「改行を残すか、除去するか」の2パターンから選択できます。

使い方


1.スクリプトの実行

サンプルデータとして、「普通の文字」、「改行入り」、「カンマ入り」、「ダブルクォーテーション入り」を用意しました。
この範囲を選択してCSV化してみます。

スクリプトを実行します。まずは普通に「選択範囲をCSV形式で出力(標準)」を実行します。

2.結果の確認

CSVが画面上に表示されます。セル内の改行はそのまま残っています。ダブルクォーテーションは二重化しています。

3.スクリプトの実行(改行を除去)

次に改行を除去するパターンも実行してみます。「選択範囲をCSV形式で出力(改行削除)」を実行します。

4.結果の確認

改行が消去されています。ダブルクォーテーションで囲まれていれば改行が含まれていても問題ないはずですが、消したい場合はこちらをどうぞ。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00041/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('選択範囲をCSV形式で出力(標準)', 'call_export_csv_normal');
  menu.addItem('選択範囲をCSV形式で出力(改行削除)', 'call_export_csv_remove_lf');

  // メニューを画面に追加する
  menu.addToUi();
}

// menu.addItemで呼び出す関数には引数を渡せないので、引数を設定するためだけの関数を作成
function call_export_csv_normal() {
  export_csv_selected_values();
}

function call_export_csv_remove_lf() {
  export_csv_selected_values('remove_lf');
}



function export_csv_selected_values(mode) {

  // アラートに結果を表示するためにUIを取得
  const ui = SpreadsheetApp.getUi();

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // シート上で選択されている範囲を取得
  let range = sheet.getActiveRange();

  // 選択されている範囲の値を取得
  let values = range.getValues();

  // CSVテキストを格納する配列を作成
  let csv = [];

  // 選択範囲のテキストをCSV形式に変換していく
  for (let i = 0; i < values.length; i++) { // 行のループ

    let temp = []; // 1行内の文字列を一時的に格納する配列

    for (let j = 0; j < values[i].length; j++) { // 列のループ
      if (mode == 'remove_lf') {
        // 改行コードを消す場合の処理
        temp.push('"' + values[i][j].replace(/"/g, '""').replace(/
/g, '') + '"');
      } else {
        // 改行を残す場合の処理
        temp.push('"' + values[i][j].replace(/"/g, '""') + '"');
      }
    }
    csv.push(temp.join(',')); //列をカンマで連結する
  }

  ui.alert(csv.join('
')); //1行ごとに改行で連結する

}

関連するアプリ


【GASで便利に】セルの順番を逆にする(行)

選択した行範囲の順番を逆にするGoogle Apps Scriptです。ソートではなく、単純に順番を逆にします。関数の組み合わせでも実現できますが、GASを登録してしまったほうが早いかもしれません。

【GASで便利に】セルの順番を逆にする(列)

選択した列範囲の順番を逆にするGoogle Apps Scriptです。行バージョンを作ったので、列バージョンも。ニーズはあるのでしょうか。

【GASで便利に】セルの順番を逆にする(行と列)

選択した行および列範囲の順番を逆にするGoogle Apps Scriptです。これは本当に使い所があるのかわかりませんが、作ってみたので公開します。

【GASで便利に】指定した文字数でセルに分割する(行方向)

1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。行方向に分割します。

【GASで便利に】指定した文字数でセルに分割する(列方向)

1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。列方向に分割します。

【GASで時短】複数セルの中身を1セルにまとめる

選択されたセル範囲のテキストを、1つのセルにまとめるGoogle Apps Scriptです。セルを分けて色々書き込んだけど、1セル内に改行して入力するんだった・・・!というときに使えるかも。

【GASで時短】スプレッドシートを一発で方眼紙にする

職場によっては使用が強制されていたり、逆に禁止されていたりする「方眼紙」を作成するGoogle Apps Scriptです。

タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp