Google Apps Scriptを利用してスプレッドシートに改行付きでまとめられた表を分解して組み合わせパターン網羅表を作ることになったときのためのTips。
今回のゴール
シート1で一行ごとにCaseAとCaseBの改行をそれぞれ配列にしてAとBの組み合わせ網羅表をシート2に作る。
スクリプトエディタを開く
「ツール」→「スクリプトエディタ」で開けます
実際のコード
function myFunction() {
var bk = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = bk.getSheetByName("シート1");
var sheet2 = bk.getSheetByName("シート2");
var data = sheet1.getRange("A:A").getValues();
var counter = 0;
for(var i =1;i<data.length;i++){
if(sheet1.getRange(i+1, 1).getValue() != ""){
var a_arr = getCaseA(sheet1,i);
var b_arr = getCaseB(sheet1,i);
for(ai in a_arr){
for(bi in b_arr){
counter++;
sheet2.getRange(counter+1,1).setValue(counter);
sheet2.getRange(counter+1,2).setValue("【CaseA】"+a_arr[ai]+ String.fromCharCode(10) +"【CaseB】"+b_arr[bi]);
}
}
}
}
}
function getCaseA(sheet,target){
return sheet.getRange(target+1,2).getValue().split(/\r\n|\r|\n/);
}
function getCaseB(sheet,target){
return sheet.getRange(target+1,3).getValue().split(/\r\n|\r|\n/);
}
実行は再生ボタンを押せば動きます。
シート2の結果
getValues
使えばもっと簡略化できそうな気もしなくもないですが。。。
それはまた今度時間ができたときゆっくり見ます。