0
1
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- Googleフォームから送信後に、領収書を発行するスクリプトを組んでいます。
・金額、宛名、但し書き、日付を領収書フォームに自動で転記させたい
前提
シートは4枚です。(フォーム集計・#発行元データ・#発行PDF・会員リスト)
宛名部分が事務的に少し煩雑なので、入力されたデータを発行元データで再度収集。
【発行元データ】
D列:金額
E列:但し書き
F列:日付
G列:コード
H列:名前
I列:コード
J列:名前
※GH列は、LEFT関数を使って、A~C列に入力されている(コード+名前)を分割
※IJ列は、Arrayformulaで抜き出し
【発行PDF】
A1:Z1=領収書(シート入力)
D2=コード入れる場所
I9=日付(但書きの下)
現在は、このシートの下部
A17~C17で日付
E17~S17で但し書き
T17~Z17で金額
を一度取ってから、関数で領収書に入れています。
宛名は、D2にコード入れるとArrayformulaで名前が入る関数を入力しています。
発生している問題・エラーメッセージ
エラーメッセージはありません。 ただ、反映されません。どこが間違っているのかご教示いただきたいのです。 ### 該当のソースコード function myFunction(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh1 = ss.getSheetByName('#発行元データ'); var sh2 = ss.getSheetByName('#発行PDF'); var sh3 = ss.getSheetByName('会員リスト'); var targetId = sh2.getRange("D2").getValue(); var values = getmyFunction(targetId); if(values.length > 0){ sh2.getRange('A17:Z17').clearContent(); sh2.getRange(17,1,values.length,values[0].length).setValues(values); } } function getmyFunction(targetId){ 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] == targetId; }); 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,,,,text,,,,,,,,,,,,,,,price,,,,,,,]; records.push(record); } return records; } ### 試したこと 上部にある sh2.getRange('A17:Z17').clearContent(); sh2.getRange(17,1,values.length,values[0].length).setValues(values); ここの範囲が違っているのかと思い変更してみるも、変化なし。思い切って('A1:Z100')を入れても何も変化なしでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答2件
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。