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

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

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

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

Gmail

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

Google Apps Script

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

メール

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

Q&A

解決済

1回答

1539閲覧

GMAILからスプレッドシートへの転記で複数のデータを一つのセルに転記したい

sinobu2

総合スコア1

Google スプレッドシート

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

Gmail

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

Google Apps Script

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

メール

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

0グッド

0クリップ

投稿2021/10/21 11:13

前提・実現したいこと

GASを使っての複数の形式のメールからのスプレッドシートへの転記にあたり、お名前を2種類の抽出条件で抽出しているのですが、この2つを一つのセルにまとめて記載するにはどうしたらよいでしょうか

発生している問題

行1はB列に名前が、行2はC列に名前が入っているような形(片方に名前が入っていればもう片方は空欄という状態)になっているため、これを一つの列に入るようにしたいのです。

該当のソースコード

var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getRange(7, 21, sheet.getLastRow() + 1).getValues(); function getMail01(){ var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // シート名を記入 var objSheet = objSpreadsheet.getSheetByName("メール蓄積データ");  var sheet = SpreadsheetApp.setActiveSheet(objSheet); var start = 0; // 取得するメールの最大件数 var max = 100; // Gmailのラベル名をここに記載 var threads = GmailApp.search('is:unread to:メールアドレス',start,max); // 最後の行探してそれ以降に追加 挿入開始位置 var Messages = GmailApp.getMessagesForThreads(threads); var row = sheet.getLastRow() + 1; // 見出しがあるためシートの1行目を固定 sheet.setFrozenRows(1); // メールから抽出// for(var i = 0; i < Messages.length; i++) { for(var j = 0; j < Messages[i].length; j++) { var id = Messages[i][j].getId(); if(!hasId(id)){ var body = Messages[i][j].getPlainBody(); var date = threads[i].getMessages()[j].getDate(); var regName = new RegExp('お名前:' + '[\s\S]*?' + '職業|電話番号'); var Name = body.match(regName)[0].replace('お名前:', '').replace('職業', '').replace('電話番号', '').replace('\n|\r\n|\r', ''); var regName2 = new RegExp('お名前:'+ '.*?' + '\n|\r\n|\r'); var Name2 = body.match(regName2)[0].replace('お名前:', '').replace('\n|\r\n|\r', ''); // それぞれの項目をセルを指定してスプレッドシートへ転記 sheet.getRange(row,2).setValue([Name]); sheet.getRange(row,3).setValue([Name2]); row++

試したこと

あらかじめスプレッドシートの別セルに=B1&C2のように入力してみましたが空白で上書きされてしまうようでうまくいきませんでした

どのようにしたら良いかご教授願えれば幸いです。
宜しくお願い致します

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

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

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

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

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

guest

回答1

0

ベストアンサー

まず知っておかなければならないのは、matchは配列を返すということです。
つまりNameName2は配列になります。
マッチした文字列を取り出すには Name[0] name2[0] としなければなりません。

そして、何をしたいのか今一つよくわかりませんが、この2つの文字列を単純に結合して1つの文字列になれば良いのなら、name[0] + name2[0] です。

投稿2021/10/21 11:25

編集2021/10/21 12:05
itagagaki

総合スコア8402

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

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

sinobu2

2021/10/21 11:46

ありがとうございます!超基礎からのド素人のため何をやってるんだろうと思われるコードになっているかと思いますが無事転記できました!これからもっと勉強してまいります
itagagaki

2021/10/21 12:05

すいません、回答に単純ミスがあったので、今修正しました。 でも無事できたようで良かったです。
sinobu2

2021/10/21 13:01

重ね重ねありがとうございます。実のところ最初の回答でうまくいかなかったので自己判断で打ち換えた次第です。考え方が分かったので助かりました。まだ右も左も分からない状態ですが精進してまいります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問