<スポンサーリンク>
忘備録です。
【GAS】2次元配列から、必要な列だけ取り出す方法
GASは値の書きこみ、消去などをいちいち行っていくと、非常に遅くなります。
ですので、GASを高速化するためには、2次元配列を駆使することは必須となります。
そこで今回は、2次元配列から、必要な列だけ取り出す方法を忘備録として残しておきたいと思います。
array.forEach(function (element, index, array1)
使用するのは、配列.forEach(function (要素, 番号, 元の2次元配列){})で、
下記のように、使用することで、二次元配列の各値を取得することが可能です。
array.forEach(function (element, index, array1){
console.log(array1) //元の行列を取り出し
console.log(index) //配列の番号を取り出し
console.log(element) //配列の要素を取り出し
})
もう少し具体的にコードを書くと、下記の通り、
・A1~E5までの範囲を取得し、sheet_dataに代入
・pushを用いて、B列[1]C列[2]の情報だけ抜き出し、新たな配列data_out.を作成。
・最後に.setValuesで一気に貼り付ける
というコードを書いてみました。
コンソールログにて、どのようなデータが取れているか見ることが出来るので、是非走らせてみてください。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var sheet_data = sheet.getSheetValues(1, 1, 5, 5)
var data_out = []
num = 0
sheet_data.forEach(function (element, index, array1) {
console.log(array1)
console.log(index)
console.log(element)
num = num + 1
data_out.push([element[1], element[2]])
});
console.log("data_out↓")
console.log(data_out)
sheet.getRange(1, 7, num, 2).setValues(data_out)
}
ちなみに、for~of~ 文でも同じように要素を取り出すことが可能です。
function myFunction2() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var sheet_data = sheet.getSheetValues(1, 1, 5, 5)
for (var element of sheet_data) {
console.log(element);
};
}
コメント欄