前提・実現したいこと
知識不足であることから、ご支援頂ければと思います。
現在、Google Formからアンケートをとっており、Google Spread Sheetで集計を行なっております。
J列からS列までに
- =VLOOKUP(B2,'商品リスト'!$B$2:$D$999,2,false)
- =VLOOKUP(B2,'商品リスト'!$B$2:$D$999,3,false)
- =C2
- =D2
- =E2
- =F2
- =G2
- =H2
- =I2
と、他の項目を参照させるようにしたいです。
発生している課題
Google Formで回答が入るたびに、1行自動的に追加されるため、最初から関数を入れていても自動的にVlookup等が機能しません。
検索で色々な情報を調べていたところ、Google apps scriptで処理すべきではないかと考えておりますが、
どのように対応すべきかよく見えてきません。
或いは、Google Spread Sheetにあるスクリプトエディターで達成できるのではないかとも考えております。
試したこと
Google Formから1行追加されるたびに、J列からS列までの関数を自動的に反映させるにはどのようにすれば宜しいでしょうか。
お力添えいただけると幸いです。
補足情報(FW/ツールのバージョンなど)
既に知り合いに依頼し次のようなコードがGoogle Spread Sheetのスクリプトエディターに記述済みです。
function recreateSheetByBusinessName() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet() var sheetMain = spreadsheet.getSheetByName('フォームの回答 1') var colBusinessNames = sheetMain.getRange(2,10,spreadsheet.getLastRow()-1,1).getValues() var businessNames = [] for(var i=0;i<colBusinessNames.length;i++){ for(var j=0;j<colBusinessNames[i].length;j++){ businessNames.push(colBusinessNames[i][j]) } } businessNames = businessNames.filter(function(x,i,self){ return self.indexOf(x) === i }).sort() for(var i=0;i<businessNames.length;i++){ var sheetName = 'XXX'+businessNames[i]; //FIXME:delete 'XXX' var sheetSub = spreadsheet.getSheetByName(sheetName) if(sheetSub){ sheetSub.clearContents() }else{ spreadsheet.insertSheet(sheetName) sheetSub = spreadsheet.getSheetByName(sheetName) } var query = "=Query('フォームの回答 1'!A:S,\"where J='"+businessNames[i]+"'\")" sheetSub.getRange(1,1).setFormula(query) } }