事前準備
今回のコードを実行するため、例としてA〜C列にa1からc6までのデータを入力しておきます。
まずは選択した範囲のデータを配列で取得するコードを書きました。
ポイント
選択範囲のデータを取得するコードを書きます。
var value = range.getA1Notation();
var values = sh.getRange(value).getValues();
コード.gs
function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); var range = sh.getActiveRange(); var value = range.getA1Notation(); var values = sh.getRange(value).getValues(); Browser.msgBox("[" + values + "]"); }
コードを実行する
A2からC4を範囲選択して、myFunctionを実行してみると、
選択した範囲のデータが配列で取得できます。
次に、取得した配列を一列にしてシートに入力するということをやってみます。
ポイント
1. 例では、選択した隣の列に書き出します。
var col = values[0].length + 1;
2. 行の数だけ、列の数を繰り返します。
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
sh.getRange(row, col).setValue(values[i][j]);
row++;
}
}
コード.gs
function set_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; for (var i = 0; i < values.length; i++) { for (var j = 0; j < values[i].length; j++) { sh.getRange(row, col).setValue(values[i][j]); row++; } } }
コードを実行する
A2からC4を範囲選択して、set_range_valuesを実行してみると、
A2からC4のデータが、D列に入力されます。
おまけ
例では配列の順番がa2, b2, c2となっています。
これを a2, a3, a4としたいと思い、そのコードも書いてみました。
ポイント
ポイント
列の数だけ行の数を繰り返すという風にコードを書き換えます。
for (var i = 0; i < values[0].length; i++) {
for (var j = 0; j < values.length; j++) {
sh.getRange(row, col).setValue(values[j][i]);
row++;
}
}
for (var j = 0; j < values.length; j++) {
sh.getRange(row, col).setValue(values[j][i]);
row++;
}
}
コード.gs
function set_range_values2() { 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; for (var i = 0; i < values[0].length; i++) { for (var j = 0; j < values.length; j++) { sh.getRange(row, col).setValue(values[j][i]); row++; } } }
コードを実行する
A2からC4を範囲選択して、set_range_valuesを実行してみると、
期待通りの結果が得られました。
function set_range_values2() { 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; for (var i = 0; i < values[0].length; i++) { for (var j = 0; j < values.length; j++) { if(values[j][i] != ""){ sh.getRange(row, col).setValue(values[j][i]); row++; } } } }