スプレッドシートの選択している範囲だけをCSVで出力するGoogle Apps Scriptです。CSVで出力したい・・・けどシート全体をCSVでダウンロードするのは面倒という方へ。
特にありません。今お使いのスプレッドシートに組み込めます。
サンプルデータとして、「普通の文字」、「改行入り」、「カンマ入り」、「ダブルクォーテーション入り」を用意しました。
この範囲を選択してCSV化してみます。
スクリプトを実行します。まずは普通に「選択範囲をCSV形式で出力(標準)」を実行します。
CSVが画面上に表示されます。セル内の改行はそのまま残っています。ダブルクォーテーションは二重化しています。
次に改行を除去するパターンも実行してみます。「選択範囲をCSV形式で出力(改行削除)」を実行します。
改行が消去されています。ダブルクォーテーションで囲まれていれば改行が含まれていても問題ないはずですが、消したい場合はこちらをどうぞ。
/**
* このスクリプトの説明、使い方はこちら。
* 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行ごとに改行で連結する
}
選択した行範囲の順番を逆にするGoogle Apps Scriptです。ソートではなく、単純に順番を逆にします。関数の組み合わせでも実現できますが、GASを登録してしまったほうが早いかもしれません。
選択した列範囲の順番を逆にするGoogle Apps Scriptです。行バージョンを作ったので、列バージョンも。ニーズはあるのでしょうか。
選択した行および列範囲の順番を逆にするGoogle Apps Scriptです。これは本当に使い所があるのかわかりませんが、作ってみたので公開します。
1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。行方向に分割します。
1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。列方向に分割します。
選択されたセル範囲のテキストを、1つのセルにまとめるGoogle Apps Scriptです。セルを分けて色々書き込んだけど、1セル内に改行して入力するんだった・・・!というときに使えるかも。
職場によっては使用が強制されていたり、逆に禁止されていたりする「方眼紙」を作成するGoogle Apps Scriptです。