複数行の横並びデータを列を区切って縦並びに変更したい

B3 から M12 のレンジで getValues() して取れる二次元配列を data とします。

javascript

1const sheet = SpreadsheetApp.getActiveSheet();2const data = sheet.getRange(3, 2, 10, 12).getValues();

この data を加工して、並び替え後の表の内容となる二次元配列を data2 として得るには以下のようにします。

まず以下のような補助関数 chunk(ary, n) を作っておきます。

javascript

1const chunk = (ary, n) => 2 ary.length <= n ? [ary] : [ary.slice(0, n), ...chunk(ary.slice(n), n)];

これを使って data から data2を得るには以下のようにします。

javascript

1const data2 = data.flatMap(2 ([name, _url, _mail, ...values]) => 3 chunk(values, 3)4 .filter(ary => ary.some(v => v))5 .map(ary => [name, ...ary])6 );7 8console.log(data2);

data2 は以下のようになります。

イメージ説明

コメントを投稿

0 コメント