次のようなスクリプトが参考になるでしょうか。
3列目以降の列数が増えても構いませんが、
罫線の処理はしていません。
JavaScript
1// 3列目以降のデータを行データに分割
2function sample20140214() {
3 // 初期設定
4 const ss = SpreadsheetApp.getActiveSpreadsheet();
5 const sheetFrom = ss.getSheetByName('シート1');
6 const sheetTo = ss.getSheetByName('シート2');
7 const dataColumn = 3; // 行に分割するデータの開始列
8
9 // データを取得し見出しから項目名を取り出す
10 const values = sheetFrom.getDataRange().getValues();
11 const titles = values.shift(); // 見出し行を分離
12 const items = titles.slice(dataColumn - 1); // 3列目以降の項目名を取得
13
14 // データを加工
15 const data = [];
16 for (const value of values) {
17 const key = value.splice(0, dataColumn - 1); // 最初の2項目を分離
18 // 3項目以降のデータがあれば、記入用データに蓄積
19 value.forEach((item, i) => {
20 if (+item > 0) {
21 data.push([...key, items[i], item]);
22 }
23 });
24 }
25
26 // シートに記入
27 if (data.length > 0) {
28 sheetTo.clearContents(); // シートをクリア
29 data.unshift(['日時', '人', '項目', '数量']); // 見出しを加える
30 sheetTo.getRange(1, 1, data.length, data[0].length).setValues(data);
31 }
32}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。