@alps5150z

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

GASでGメールの自動転記マクロについて

解決したいこと

GASでGメールの自動転記マクロで列入力したいと考えています。

受信したメールをスプレッドシートに自動転記するマクロを作成したのですが、
行(横並び)に入力されているので、どうすれば列(縦並び)に入力できるかわかりません。

初めてマクロを組むのでどうした良いのかわからず困っています。

該当するソースコード

function getEmails() {

  // 検索条件に該当するスレッド一覧を取得
  var threads = GmailApp.search('subject:フォームからのお問い合わせ -label:処理済み');

  // スレッドを一つずつ取り出す
  threads.forEach(function(thread) {
    // スレッド内のメール一覧を取得
    var messages = thread.getMessages();

    // メールを一つずつ取り出す
    messages.forEach(function(message) {
      // メール本文を取得
      var plainBody = message.getPlainBody();

      // 差出人を取り出す
      var name = plainBody.match(/差出人: (.*)/);

      // 会社名を取り出す
      var company = plainBody.match(/会社名: (.*)/);

      // メールアドレスを取り出す
      var email = plainBody.match(/メールアドレス: (.*)/);

      // 電話番号を取り出す
      var tel = plainBody.match(/電話番号: (.*)/);

      // 書き込むシートを取得
      var sheet = SpreadsheetApp.getActive().getSheetByName('テスト');

      // 最終行を取得
      var lastRow = sheet.getLastRow() + 1;

      // セルを取得して値を転記
      sheet.getRange(lastRow, 1).setValue(name[1]);
      sheet.getRange(lastRow, 2).setValue(company[1]);
      sheet.getRange(lastRow, 3).setValue(email[1]);
      sheet.getRange(lastRow, 4).setValue(tel[1]);
    });

    // スレッドに処理済みラベルを付ける
    var label = GmailApp.getUserLabelByName('処理済み');
    thread.addLabel(label);
  });
}

現状

やりたい事

自分で試したこと

ソースのlastRowをlastColumnに変えたり、lastRow, 1の部分の数字を変えたり、
Youtubeや他のページを見て応用したりしていますが、頭がこんがらがってわからなくなりました。

0 likes

1Answer

以下のようにしてはどうでしょうか.こちらで動作確認は取れています.

改善案
let lastColumn = sheet.getLastColumn() + 1;
sheet.getRange(1, lastColumn).setValue(name[1]);
sheet.getRange(2, lastColumn).setValue(company[1]);
sheet.getRange(3, lastColumn).setValue(email[1]);
sheet.getRange(4, lastColumn).setValue(tel[1]);
Logger.log("inserted " + name[1]);

getRangeの第一引数はrowで第二引数はcolumnの指定でなければいけませんので,上のように書く必要があります.

余談

GASでコーディングしてるとき,sheet.getRange(まで入力すると,以下のようにコードヒントが出てきます.

スクリーンショット 2022-02-01 12.57.46.png

ソースのlastRowをlastColumnに変えたり、lastRow, 1の部分の数字を変えたり、

とのことでしたが,コードヒントの1行目の通り,第一引数がrow,第二引数はcolumnに相当する値を渡さなくてはなりません.lastRowをlastColumnに置き換えるというイメージではダメってことですね.

行き詰まった場合は,コードヒントを表示してみて,引数に何を入れるべきなのか確認してみたり,公式ドキュメントを読みに行くようにしましょう.

あと,画像を載せるときは

![キャプション](URL)

です. 投稿前後にちゃんと意図した通りに表示されているかの確認をお願いします.
また,プログラムを掲載する場合は

```言語名:タイトル
プログラム
```

のようにして書いていただくと,シンタックスハイライトがついて上記のように見やすくなりますのでご検討をお願いします.GASはJavaScript扱いですので言語名の欄をjsにしていただければ機能します.Qiita公式のMarkdownの書き方を載せておきます.参考にしてください.

3Like

Comments

  1. @alps5150z

    Questioner

    ありがとうございます!
    無事、実装したかった機能を実装できました!

    今回が初投稿だったので、不慣れなところが出てしまいました。
    次回からは、PondVillege様から頂いた資料を参考にしながら、投稿したり、GASコードの勉強に励ませて頂きます!

    本当に助かりましたありがとうございました!!
  2. うまくいったようでよかったです!この初投稿,質問をクローズにしたら完了です!お疲れ様でした。これからも頑張ってください。

Your answer might help someone💌