選択範囲に改行が含まれているセルを検索し、削除することもできるGoogle Apps Scriptです。想定外の改行によって困ることが稀によくありますので作ってみました。改行を削除するかどうかはダイアログで選択できます。
特にありません。今お使いのスプレッドシートに組み込めます。
このスクリプトは選択中のセル範囲を対象にして動作します。スクリプト実行前に改行コードを探したい範囲を選択してください。
この例では一部だけ選択していますが、シート内全てを選択しても構いません。
範囲を選択したら、メニューから「選択範囲内にある改行を検索する」を実行してください。
選択範囲に改行が存在すると、そのセル番地が表示されます。この例では改行だけが含まれるセルが2つあったようです。
もし改行を削除したい場合は「OK」を押してください。
削除しなくてよい場合は「キャンセル」を押してください。スクリプトが終了します。
ダイアログで「OK」を押すと、引き続き改行コードの削除処理が実行されます。
削除されたことを確認してください。
選択された範囲に改行コードが1つも無かった場合は、「改行は見つかりませんでした」というメッセージを表示して、スクリプトを終了します。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00036/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('選択範囲内にある改行を検索する', 'find_newline_code');
// メニューを画面に追加する
menu.addToUi();
}
function find_newline_code() {
// アラートを表示するためにUIを取得
const ui = SpreadsheetApp.getUi();
// アクティブなスプレッドシート、シートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// シート状で選択されている範囲を取得
let range = sheet.getActiveRange();
// 選択されている範囲の値を取得
let values = range.getValues();
// 改行が含まれているセルを記録する配列
let result = [];
// セルを1つずつ改行が含まれているかチェックする
for (let i = 0; i < values.length; i++) { // 行のループ
for (let j = 0; j < values[i].length; j++) { // 列のループ
if (values[i][j].toString().match(/\n/)) {
// 改行が含まれていれば記録用の配列に追加する。1つ目が行、2つ目が列
result.push([i, j]);
}
}
}
// 改行が含まれているセルをA1形式で表示するために、rangeの開始行、開始列を取得する
const start_row = range.getRow();
const start_col = range.getColumn();
// 改行が含まれているセル番地をメッセージで表示する。表示するセルを格納する配列。
let msg = [];
// R1C1方式をA1方式に変換するために、アルファベットの配列を用意する
const alphabets = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
// セル番地を生成、配列に追加していく
for (let i = 0; i < result.length; i++) {
let row = result[i][0] + start_row; // 行番号
let col = result[i][1] + start_col; // 列番号
msg.push(alphabets[col - 1] + row); //アルファベットの配列は0スタートなので-1する
}
// 改行を含むセルが1つも無ければスクリプトを終了する
if(msg.length == 0){
ui.alert('改行は見つかりませんでした');
return;
}
// 改行を削除するかどうかユーザーに確認する
const user_response = ui.alert('改行を含むセルが見つかりました\n' + msg.join('\n') + '\n\n改行を削除しますか?', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたらスクリプトを終了する
if (user_response == ui.Button.CANCEL) {
return;
}
// ここから改行を消去するための処理
// 改行を消したデータを作成する
for (let i = 0; i < values.length; i++) { // 行のループ
for (let j = 0; j < values[i].length; j++) { // 列のループ
if (values[i][j].toString().match(/\n/)) { // 改行が含まれていれば
values[i][j] = values[i][j].replace(/\n/g, ''); // 改行を消して値を上書き
}
}
}
// 改行を消したデータ配列をシートに書き込む
range.setValues(values);
}
選択した2つのセル(範囲)の値を、入れ替えるGoogle Apps Scriptです。行や列の入れ替えもできます。
選択した行範囲の順番を逆にするGoogle Apps Scriptです。ソートではなく、単純に順番を逆にします。関数の組み合わせでも実現できますが、GASを登録してしまったほうが早いかもしれません。
選択した列範囲の順番を逆にするGoogle Apps Scriptです。行バージョンを作ったので、列バージョンも。ニーズはあるのでしょうか。
選択した行および列範囲の順番を逆にするGoogle Apps Scriptです。これは本当に使い所があるのかわかりませんが、作ってみたので公開します。
1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。行方向に分割します。
1つのセルに入力されている文字列を、指定した文字数で分割するGoogle Apps Scriptです。区切りに使用する文字が無くても大丈夫です。列方向に分割します。
選択範囲に存在する結合されたセルを検索し、解除することもできるGoogle Apps Scriptです。予想外の結合によって困ったことがある方は多いと思います。このアプリが転ばぬ先の杖になれば幸いです。結合を解除するかどうかはダイアログで選択できます。
検索キーワードを全シートから探して、ヒットしたセル番地をまとめて表示するGoogle Apps Scriptです。標準の検索機能ではヒットしたセルが1個ずつ分かりますが、まとめて知りたくなったので作成しました。
シート内の「何も書き込まれていない行」を削除してくれるGoogle Apps Scriptです。スプレッドシートをメモ帳代わりにしていると、特に意味のない空白行がたくさんあったりして、消すのが面倒だったので作成してみました。すべての列に何も文字が入っていない行を消し去ります。
1行ごとに任意の空白行を挿入してくれるGoogle Apps Scriptです。データを整理中に「今ある行の間に1行ずつ足したい・・・」ということが稀によくあるので作成しました。追加する行数はプロンプトで指定が可能です。
シート内に存在するハイパーリンク(URL)を取り出すGoogle Apps Scriptです。リンクを全て抜き出したくなったので作成してみました。