

WordPress に "Contact Form 7" と "CF7 Google Sheet Connector" を入れ、Contact Form
7からの入力をGoogleスプレッドシートの『シート1』の一番下へと追記するようにしております。

ここで、Contact Form 7のprefの項目へとユーザー様の都道府県を入力頂いて、それを『シート2』  
の都道府県vs担当者メアド対応表についてVLOOKUPをつかって検索し、メールを投げたいと思って  
おります。  
Contact Form 7でadminに送られてきますメールではなく、各都道府県の担当者へ別途指示を出しますメールを作成したいです。

そこで、以下のコードを書きましたが上手く動いてくれません。

Googleフォームを使用しておりませんので、トリガーを

イベントのソースを選択 ： スプレッドシートから  
イベントの種類を選択 ： フォーム送信時

としておりますが、１回も実行されておりません。

また、トリガーと別にデバッグをしますと、以下のエラーが出ます。

[code]

    TypeError: Cannot read property 'response' of undefined
    sendform    @ コード.gs:4
    
[/code]

'response'のスペルを何度も確認しましたがミスは無さそうで、フラグと合わせてダブルパンチで困っております。

この手のプログラムは初めてで、ネット検索しながらコピペで使用しておりますので、素人を助けてくださいますかたお願いいたします。

* * *
[code]

    // FormApp.getActiveForm()
    
    function sendform(e) {
      var items = e.response.getItemResponses();
      for (var i = 0; i < items.length; i++) {
        var item = items[i];
        var q = item.getItem().getTitle();
        if ( q === "pref" ) {
          var a = item.getResponse();
          var mail_address = VLOOKUP(a,importrange("https://docs.google.com/spreadsheets/d/xxxxxxxx-xx--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/","シート2!$A$1:$D$48"),3,FALSE) ;
          var message = VLOOKUP(a,importrange("https://docs.google.com/spreadsheets/d/xxxxxxxx-xx--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/","シート2!$A$1:$D$48"),4,FALSE) + 'にお住まいのお客様からの依頼です\n\n' ;
    
          GmailApp.sendEmail(mail_address, 'お問い合わせがありました', message);
    
        }
      }
    }
    
[/code]

**シート2**

[code]

      A         B              C            D
    北海道　〇〇株式会社　XXX@example.com　北海道(←メッセージは後から変更しますが、取り敢えず都道府県を入れております)
    
[/code]


CC BY-SA 4.0
2021-01-26T07:36:45.973
73588
2021-12-25T09:05:45.437
2021-01-26T12:05:00.707
3060
43684
question
google-apps-script
Googleスプレッドシートにフォームから追記されたらメールを送信したい


自己レスですが、

[code]

    function sendform(e) {
    
[/code]

で持ってくることが出来なかったので

[code]

    function sendform() {
      var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = spreadsheet.getSheets()[0];
      var lastRow = sheet.getRange(sheet.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
    
      var range = sheet.getRange(lastRow, 1, lastRow ,12);
      var currentRangeValues = range.getValues();
    
[/code]

として、トリガーを

イベントのソースを選択： スプレッドシートから  
イベントの種類を選択 ： 変更時

としましてなんとか…


CC BY-SA 4.0
2021-01-28T06:29:11.223
73632
2021-01-28T06:42:48.120
2021-01-28T06:42:48.120
3060
43684
73588
answer