実現したいこと
自動更新されるデータベースに記載される会員番号を取得し、繰り返し別のシートのセルに転記したい。
前提
自動で領収書を発行するシステムを作っています。
①Googleフォームで情報入力→②Googleスプレッドシートで集計→③PDF化+メール送信(GASにて)
上記の流れの仕組みで、②の部分で苦戦しております。
スプレッドシートには、発行元データ・発行PDF・会員リストがあります。Googleフォームの集計から発行元データにフィルター関数を使って一旦、情報整理しています。(ここまではスプレッドシート内に関数入れています)
この発行元データに新たに情報が記載されると、GASで会員番号を基に自動で名前・日付・金額などを別のシートに転記するように作成しております。
ただ、最後のところ、新たに発行元データに記載があったらその会員番号をGASで取得し発行PDFシートへ転記させたいのですが、ここがうまくいきません。
値の取得はできているのですが、転記が上手くいっていません。ここまで作ったので何とか最後まで完成させて実用化させたいのです。
現在は、発行PDFシート内に会員番号を手打ちすれば、日付や但書、金額の情報がGASで反映・PDF化してくれる状態です。会員情報がキーになるので、これが先に発行PDFシートへ転記されないと日付等の情報が反映されないのです。
この点、ご教示いただけると幸いです。
発生している問題・エラーメッセージ
エラーメッセージ エラーメッセはありません。ただ反映されません。 ### 該当のソースコード function myFunction(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh1 = ss.getSheetByName('#発行元データ'); var sh2 = ss.getSheetByName('#発行PDF'); //var sh3 = ss.getSheetByName('会員リスト'); var targetuserId = sh2.getRange('D2').getValue(); var values = getmyFunction(targetuserId); //console.log(targetuserId);//D2 if(values.length > 0){ sh2.getRange('A17:Z17').clearContent();//#発行PDFのA17~Z17の内容を削除 sh2.getRange(17,1,values.length,values[0].length).setValues(values); //console.log(sh2.getRange('A16:Z16')); } } function getmyFunction(targetuserId){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh1 = ss.getSheetByName('#発行元データ'); var lastRow = sh1.getRange(sh1.getMaxRows(),6).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); var values = sh1.getRange(3,1,lastRow-2,10).getValues(); console.log(lastRow); console.log(values); values = values.filter(function(value){ return value[6] == targetuserId; }); var records = []; for(var values of values){ var code = values[8];//会員番号 var name = values[9]; var data = values[5]; var text = values[4]; var price = values[3]; var record = [data,,,,code,,,,text,,,,,,,,,,,price,,,,,,,]; //var record = [data,,,,text,,,,,,,,,,,,,,,price,,,,,,,];//動かなくなったらコレコピペ records.push(record); } return records; }

回答1件
あなたの回答
tips
プレビュー