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

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

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

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

Gmail

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

Q&A

解決済

1回答

1528閲覧

メールIDをスプレッドシートに抽出して重複を回避したい

NOROSAN

総合スコア2

Google スプレッドシート

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

Gmail

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

0グッド

0クリップ

投稿2020/08/10 11:24

編集2020/08/11 04:48

メールIDをスプレッドシートに抽出して重複を回避したい

◆GMAILの予約完了受信メールの日時をスプリッドシートに書きたい
◆最終的にはスプレッドシートからGOOGLEカレンダーに予定を自動で追加したい

:まだGASを知って数日で、当初はgmailからGASでGカレンダーに直接書き出したかったのですが
それはうまくいかず、手順を追って一つずつ攻略していこうと試行錯誤中です


1.受信メールをスプレッドシートに全文抽出【クリア】

2.取り出したい文字を抽出 【クリア】

3.メールにラベルを付けて、ラベルのついたメールのみ抽出 【クリア】

4.実行を押すびたび、抽出した内容を重複してしまうので、、メールIDを抽出 【クリア】

5.メールIDを書き出そうとすると。日付のあとの時間が消えてしまう


idを探すコードはつくることができました。しかしコードを書き出そうとすると、日付の後ろの時間が消えてしまいます

時間が消えないようにするにはどうしたらいいのでしょうか?

ご教授いただければ幸いです。
**
抜き出したいメール
![抜き出したいメール]


function

1 2}var sheet = SpreadsheetApp.getActiveSheet(); 3 var threads = GmailApp.search('label:クラウティ'); 4for(var i=0; i<threads.length; i++){ 5 var thread = threads[i]; 6 var mails = thread.getMessages(); 7 for(var j=0; j<mails.length; j++){ 8 9 var mail = mails[j]; 10 var id = mails[j].getId(); 11 12 13 var messages = GmailApp.getMessagesForThreads(threads); 14 var sheet = SpreadsheetApp.getActiveSheet(); 15 for(var i=0; i<messages.length; i++){ 16 var plainBody = messages[i][0].getPlainBody(); 17 sheet.appendRow([plainBody.match(/レッスン時間.*/)[0].replace('レッスン時間', ''),id,]); 18 } 19 } 20 }; 21 22function logMessageId() { 23 const threads = GmailApp.search('label:クラウティ'); 24 25 const messagesForThreads = GmailApp.getMessagesForThreads(threads); 26 27 for(const messages of messagesForThreads){ 28 for(const message of messages){ 29 console.log(message.getId()); 30 } 31 } 32} 33

IDを書くようにしたら時間が消えてしまいます
イメージ説明

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

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

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

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

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

attercop

2020/08/11 05:28

A列の幅が短くて表示しきれてないだけではないでしょうか。
guest

回答1

0

自己解決

処理済みラベルをつけて、それで重複回避しました
IDでの回避は結局わかりませんでした

function

1 2}var sheet = SpreadsheetApp.getActiveSheet(); 3 var threads = GmailApp.search('subject:レッスン予約内容  -label:処理済み'); 4for(var i=0; i<threads.length; i++){ 5 var thread = threads[i]; 6 var mails = thread.getMessages(); 7 for(var j=0; j<mails.length; j++){ 8 9 var mail = mails[j]; 10 11 12 13 var messages = GmailApp.getMessagesForThreads(threads); 14 var sheet = SpreadsheetApp.getActiveSheet(); 15 for(var i=0; i<messages.length; i++){ 16 var id = messages[i][0].getId(); 17 var plainBody = messages[i][0].getPlainBody(); 18 19 20 sheet.appendRow([plainBody.match(/レッスン時間.*/)[0].replace('レッスン時間:', '').replace(' ', ''),plainBody.match(/日.*/)[0].replace('日 ', ''),id,]); 21 var label = GmailApp.getUserLabelByName('処理済み'); 22thread.addLabel(label); 23 } 24コード

投稿2020/08/11 05:27

編集2020/08/13 05:30
NOROSAN

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問