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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

1049閲覧

⦅GAS⦆Gmailへ帰ってくるエラーメールの情報をスプレッドシート へ反映させたい

nezumimuzen

総合スコア19

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

1クリップ

投稿2020/05/27 17:06

前提・実現したいこと

Gmailへ返ってくるエラーメールを件名とメールアドレスを元にラベル:errorMailで振り分けをしていますが、エラーメール内の下記、太文字メール部分のメールアドレスとスプレッドシート のメールアドレスを参照しシートのA列を1→0へ変えたいです。

やりたいこと:

ラベルで振り分けられた未読のエラーメールの内容からメールアドレスを取得

スプレッドシートと参照し同じメールアドレスが書いてある行のA列を1→0へ変更

処理の完了したメールを既読へ変更

下記に実際届くエラーメールと処理後のスプレットシートのイメージを記載しております。


〈件名〉
Returned mail: see transcript for details

〈本文〉
The original message was received at Thu, 28 May 2020 00:03:08 +0900 (JST)
from abcde.ne.jp(サーバーからのメールです) [27.133.134.231]

----- The following addresses had permanent fatal errors -----
<12345@i.softbank.jp>
(reason: 550 Invalid recipient: ~~12345~~@i.softbank.jp)

----- Transcript of session follows -----
... while talking to msv.softbank.jp.:
>>> DATA
<<< 550 Invalid recipient: ~~12345~~@i.softbank.jp
550 5.1.1 ~~12345~~@i.softbank.jp... User unknown
<<< 503 No recipients specified


スプレッドシート
シート名「シート1」
|送信(1:可2:不可)|メールアドレス|名前|列1|列2|列3|列4|列5|列6|列7|列8|列9|列10|
|:--|:--:|--:|
|1|12345@i.softbank.jp|テラテイル|...|...|...|...|...|...|...|...|...|...|||

処理完了後↓

|送信(1:可2:不可)|メールアドレス|名前|列1|列2|列3|列4|列5|列6|列7|列8|列9|列10|
|:--|:--:|--:|
|0|12345@i.softbank.jp|テラテイル|...|...|...|...|...|...|...|...|...|...|||


GoogleAppsScript

1function getMail01(){ 2 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 4// シート名を記入。 5 var objSheet = objSpreadsheet.getSheetByName("シート1");  6 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 7 var start = 0; 8 9 // 取得するメールの最大件数 10 var max = 100; 11 12 // Gmailのラベル名 13 var threads = GmailApp.search('label:errorMail is:unread',start,max); 14 15// メールからメールアドレスを取り出す// 16 for(var i = 0; i < Messages.length; i++) { 17 for(var j = 0; j < Messages[i].length; j++) { 18 19 var body = Messages[i][j].getPlainBody(); 20 var date = threads[i].getMessages()[j].getDate(); 21 22 var regName = new RegExp('errors -----' + '.*'); 23 var Name = body.match(regName)[0].replace('errors -----', '').replace('\r', ''); 24 25// 同じメールを読み込まないように、メッセージを既読にする 26 threads[i].markRead(); 27

試したこと

当方非プログラマーであり、サンプルコードなど参考になるコードを検索しても全く出てこなかったためつぎはぎのコードを書くことしかできませんでした。
至らない点が多いかと思いますが、何卒お教え願います。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のように処理するだけです。

  1. スプレッドシートのデータ部分全体を読み込み
  2. 2列目のデータを2行目から最後の行までメールアドレスが一致するまでループし探す
  3. 見つかった行の1列目のフラグを変更
  4. データをスプレッドシートへ書き戻す

投稿2020/06/01 01:07

draq

総合スコア2573

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問