質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

意見交換

クローズ

2回答

1117閲覧

領収書の発行を自動化したい

10-mo

総合スコア23

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2023/06/27 05:52

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/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答2

#1

YAmaGNZ

総合スコア10548

投稿2023/06/27 07:12

エディタ上でデバッグ実行すれば、ブレイクポイントも設定できますし、変数の中身も確認しながら実行できます。
getmyFunctionの戻り値がどうなっているのかなど確認しながらデバッグしてはどうでしょうか。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

10-mo

総合スコア23

投稿2023/06/29 01:04

原因が不明ですが、作動するようになりました。

ありがとうございました。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問