このように
関連記事
の合わせ技で実現したコード
コード.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);
}
|
