このように
関連記事
の合わせ技で実現したコード
コード.gs
//選択肢した範囲の値をユニークにして一列で書き出す function get_unique_values() { var array = get_range_values(); var unique = get_unique(array); var arrays = get1dTo2d(unique); set_values(arrays); } //範囲を一列に書き出す function get_range_values() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); var range = sh.getActiveRange(); var value = range.getA1Notation(); var values = sh.getRange(value).getValues(); var col = values[0].length + 1; var row = 1; var array = []; for (var i = 0; i < values[0].length; i++) { for (var j = 0; j < values.length; j++) { if(values[j][i] != ""){ array.push(values[j][i]); row++; } } } return array; } //一次元配列をユニークにする function get_unique(values){ var unique = values.filter(return_unique); return unique; } function return_unique(value_i, index, array){ var value_i_index = array.indexOf(value_i); var result = value_i_index === index; return result; } //一次元配列を2次元配列にする[1,2,3]→[[1],[2],[3]] function get1dTo2d(array) { var arrays = []; for(var i = 0; i < array.length; i++) { arrays.push([array[i]]); } return arrays; } //シートに書き出す function set_values(array){ var sh = SpreadsheetApp.getActiveSheet(); var last_row = sh.getLastRow(); var start_row = 1//last_row + 1; var start_col = sh.getLastColumn() + 2; var num_rows = array.length; var num_cols = array[0].length; var range = sh.getRange(start_row, start_col, num_rows, num_cols); range.setValues(array); } |