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

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

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

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

Gmail

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

Google Apps Script

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

解決済

メールの内容をforEachで順番に取得したいが最新のメールの情報だけ取得される

Sou23
Sou23

総合スコア38

Google スプレッドシート

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

Gmail

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

Google Apps Script

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

1回答

0リアクション

0クリップ

330閲覧

投稿2022/09/04 08:41

編集2022/09/04 08:47

前提

GASでメールを取得、内容をスプレッドシートに転記するシステムを作っています。

発生している問題

複数のメールを読み込んだ際、タイムスタンプはそれぞれ正しいものを取得するがそれ以外は全て最新のもののみが取得される

該当のソースコード

GAS

function myFunction() { var values = []; var now = new Date(); now.setHours(now.getHours()-10); //条件に当てはまる全スレッドを取得(veltra) var threads = GmailApp.search('リクエスト' + ' after:' + Math.floor(now.getTime() / 1000).toString()); //各スレッド情報を取得 threads.forEach(function(thread){ //スレッド内の全メッセージを取得 var messages = thread.getMessages(); //各メッセージ情報を取得 messages.forEach(function(message){ var plainbody = message.getPlainBody(); values.push([plainbody]); //スプレッドシート情報 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('sheet1'); var raws = sheet.getLastRow()+1; var parsedText = values.toString(); var info = []; //情報取得 var timestamp = message.getDate(); var status = '未選択'; var space = ''; var familyName= parsedText.match(/参加者名:\s([^\n]*)\n/)[1].split(/\s/).slice(-1)[0]; var fullName= parsedText.match(/参加者名:\s([^\n]*)\n/)[1]; var startDate = parsedText.match(/参加日時:(.*)/).toString().slice(6,17); var startTime= parsedText.match(/参加日時:(.*)/).toString().slice(-5); var numberOfPeople= parsedText.match(/数量:(.*)/).toString().split(/,/,1).toString(); var tel=parsedText.match(/携帯電話番号:\s(.*)/)[1]; var medium= 'a'; var payment = 'クレジット' info.push(timestamp,status,space,space,space,fullName,space,space,startDate,startTime,space,numberOfPeople,space,tel,payment,space,space,medium); Logger.log(info); //sheet.appendRow(info); }) }) }

試したこと

valuesに複数の要素が入っているのに、その下のコードでは最新のものにしかアクセスできていないということまではわかりました。
どうやってvalues[0],values[1]と進めていくか考えています。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google スプレッドシート

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

Gmail

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

Google Apps Script

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