SpreadsheetAppに重複行削除等のメソッドが追加されました

Google Apps Scriptに於いて7月26日、5月頃にスプレッドシートに実装された「重複行の削除」および「空白行の削除」に関する機能について、SpreadsheetAppにメソッドとして追加がなされました。このメソッドの追加によって、プログラムから重複や空白といったノイズデータを自動処理が可能になり、独自のロジックを組む事なく、この手の処理ができるようになりました。

サンプルスプレッドシート

ソースコード

空白の削除

//空白を削除するためのコード
function removeWhite(){
  //範囲を指定する
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("空白削除");
  var range = ss.getRange("A2:A14");
  
  //空白を取り除くを実行する
  range.trimWhitespace();
  
}

trimWhitespaceメソッドが対象のメソッド。但しこの機能自体がちょっと中途半端で、文中の空白などは削除されない。行頭の空白やタブが削除される機能なので、セルの値の中の空白をすべて潰したい場合には、正規表現などを用いて消すこれまでの方法を使う必要性があります。

※また、Range指定でA2:Aといった指定をするとエラーが発生して使えません(多分バグ)

重複の削除

//重複削除するコード
function removeDouble(){
  //範囲を指定する
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("重複削除");
  var range = ss.getRange("A2:C19");
  
  //重複行を削除する
  range.removeDuplicates();
 
}

removeDuplicatesが対象のメソッド。このメソッドは範囲指定した中で重複行と判断されたものを削除してくれますので、複数列を指定した場合には、行単位で削除の検証を行ってくれます。これでクエリなどで言う所のグループ化などを使った重複データの除外が可能になります。

※こちらのメソッドは、Range指定でA2:Aといった指定をしても問題ありません。

関連リンク