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

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

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

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

222閲覧

gmailからスプレッドシートに転記したデータの検索

pochi-_-

総合スコア9

Google スプレッドシート

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

Google Apps Script

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/05/24 06:35

編集2022/05/25 00:26

イメージ説明

受信メール(抜粋)
◆L22-PC01・システム関連機器のファイナンスリース
機関:日本銀行(BOJ) / 入札形式:一般競争入札 / 北海道,青森県,岩手県,宮城県,秋田県,山形県,福島県,茨城県,栃木県,群馬県,東京都,神奈川県,埼玉県,千葉県,新潟県,山梨県,長野県,富山県,石川県,福井県,愛知県,岐阜県,静岡県,三重県,大阪府,京都府,兵庫県,滋賀県,奈良県,和歌山県,鳥取県,島根県,岡山県,広島県,山口県,徳島県,香川県,愛媛県,高知県,福岡県,佐賀県,長崎県,熊本県,大分県,宮崎県,鹿児島県,沖縄県
公示日:2022-05-19 / 締切日:2022-06-02
https://www2.njss.info/offers/view/21832044?reload=false&utm_source=newarrival&utm_medium=email&utm_campaign=newarrival_all

◆令和4年度 豊橋河川三次元設計データ活用システム検討業務
機関:中部地方整備局 / 入札形式:企画競争(入札・コンペ・プロポーザル) / 愛知県
公示日:2022-05-19 / 締切日:2022-06-08
https://www2.njss.info/offers/view/19899905?reload=false&utm_source=newarrival&utm_medium=email&utm_campaign=newarrival_all

◆東浦町情報セキュリティ強化対策システム借上【2205192344200540294】
機関:知多郡東浦町役場 / 入札形式:一般競争入札 / 愛知県
公示日:2022-05-20 / 締切日:2022-06-08
https://www2.njss.info/offers/view/19902475?reload=false&utm_source=newarrival&utm_medium=email&utm_campaign=newarrival_all

◆市民会館/ワイヤレスマイクシステム更新工事
機関:日進市役所 / 入札形式:一般競争入札 / 愛知県
公示日:2022-05-19 / 締切日:2022-06-02
https://www2.njss.info/offers/view/21837064?reload=false&utm_source=newarrival&utm_medium=email&utm_campaign=newarrival_all


//グローバル変数 const sheet = SpreadsheetApp.getActive().getActiveSheet(); // 書き込むシートを取得 function myFunction() { //取得するメールタイトルを指定 var mail_title = '[NJSS] 新着案件情報'; // 検索条件に該当するスレッド一覧を取得 var threads = GmailApp.search('subject:(' + mail_title + ') -label:処理済 '); // 書き込むシートを取得 let sheet = SpreadsheetApp.getActive().getSheetByName('全案件'); // スレッドを一つずつ取り出す threads.forEach(function(thread) { // スレッド内のメール一覧を取得 var messages = thread.getMessages(); // メールを一つずつ取り出す messages.forEach(function(message) { var getId = message.getId(); var mailDate ;// = message.getDate(); // 件名を取得 var subject = message.getSubject(); // 最終行を取得 // var lastRow = sheet.getLastRow() + 1; // [NJSS] 新着案件情報で始まるもの if(subject.slice(0,13)==("[NJSS] 新着案件情報")) { // メール本文を取得 var plainBody = message.getPlainBody(); console.log(plainBody) //メール本文を変数に代入(区切り文字:改行コード) var textLines = plainBody.split(/\n+/); //配列の分だけ繰り返し for ( var i = 0 ;i <textLines.length; i++){ // 最終行を取得 console.log("★" + textLines[i]) // switch (true){ case /▼202/.test(textLines[i]): //受信日 mailDate = textLines[i].slice(1,11) break case /◆/.test(textLines[i]): //件名 console.log(textLines[i]); lastRow = sheet.getLastRow() + 1; sheet.getRange(lastRow, 1).setValue(mailDate); sheet.getRange(lastRow, 2).setValue(textLines[i].slice(1)); break case /機関/.test(textLines[i]): console.log("①"+ textLines[i]); //機関/形式/県 var aaa = textLines[i].split(/ \/ /); sheet.getRange(lastRow, 3).setValue(aaa[0].slice(3)); sheet.getRange(lastRow, 4).setValue(aaa[2].slice(5)); sheet.getRange(lastRow, 5).setValue(aaa[4]); break case /公示日/.test(textLines[i]): if (/\//.test(textLines[i-1]) == true){}else{ sheet.getRange(lastRow, 5).setValue(textLines[i-1]); //公示日/締切日 var bbb = textLines[i].split(/ \/ /) sheet.getRange(lastRow, 6).setValue(bbb[0].slice(5)); sheet.getRange(lastRow, 7).setValue(bbb[2].slice(5)); break case /view/.test(textLines[i]): console.log(textLines[i]); //URL sheet.getRange(lastRow, 8).setValue(textLines[i]); break } } } }); // スレッドに処理済みラベルを付ける("処理済み"のラベルをあらかじめ作成する必要あり) var labels = GmailApp.getUserLabelByName('処理済'); // thread.addLabel(labels); }); //スプレッドシート sheet.getRange("A:H").removeDuplicates([8]); sheet.getRange(2,1,sheet.getLastRow(),sheet.getLastColumn()).sort([ {column:1,ascending:true}, {column:6,ascending:true}, {column:7,ascending:false}, ]); } function sortKouji(){ if(sheet.getSheetName()=="全案件"){ sheet.getRange(2,1,sheet.getLastRow(),sheet.getLastColumn()).sort([ {column:6,ascending:true}, {column:7,ascending:false}, ]); }else{ sheet.getRange(3, 1).setValue("=IFERROR(QUERY('全案件'!A2:H,\"select * where E like '%"+ sheet.getSheetName() + "%' order by F desc,G asc\",0),\"検索結果は0件です\")") } } function sortShime(){ if(sheet.getSheetName()=="全案件"){ sheet.getRange(2,1,sheet.getLastRow(),sheet.getLastColumn()).sort([ {column:7,ascending:true}, {column:6,ascending:false}, ]); }else{ sheet.getRange(3, 1).setValue("=IFERROR(QUERY('全案件'!A2:H,\"select * where E like '%"+ sheet.getSheetName() + "%' order by G asc,F desc\",0),\"検索結果は0件です\")") } }

【やりたいこと】
gmailからスプレッドシートに転記されたデータを、queryを利用して別シートにデータを表示させたい

【状況】
シートA
・gmailからスプレッドシートに転記
件名、ラベルにより検索
メール本文を取得
特定の部分文字を含んでいた場合、スプレッドシートに転記
A列に日付、B列に県名か表示されています

シートB
セルA2にquery関数を入力
QUERY('シートA'!A2:B,"select * where B like '%東京都%' )

となっている場合、シートA B列の値が 東京都 の場合は
クエリーで抽出表示されますが、
東京都,大阪 というように複数の県名が表示されている場合はクエリーで抽出されません
複数の県名が入力内容されているセルを一度編集すると、
シートBにクエリーで東京都,神奈川県と表示されます

クエリーで抽出可
20220510 東京都

クエリーで抽出不可
20220511 東京都,神奈川県

gmailからスプレッドシートに転機する際何か処理をする必要があるのでしょうか?

県名以外にも、メールの件名をシートAに表示させてますが、件名についても同じ状況て、スプレッドシートに、表示されているデータを部分一致で、検索できません

引用テキスト---
環境
gmail
gas
win10,chrome

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

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

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

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

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

k.a_teratail

2022/05/24 07:18

> QUERY('シートA'!A2:B,"select * where B like ''%東京都%'" ) の「''%東京都」部分、「'」が一つ多くないですか?
pochi-_-

2022/05/24 08:29

失礼しました スプレッドシートは QUERY('シートA'!A2:B,"select * where B like '%東京都%' ) となってます
k.a_teratail

2022/05/24 09:05

こちらで確認したところ、普通に表示されていますが こちらで確認した、シートAに記載している内容が そちらの想定している内容とあってないような感じがします。 ご質問に載せる内容であれば、シートAの記載内容をスクショし 添付することは可能でしょうか?
k.a_teratail

2022/05/25 00:59

シートAとおっしゃているのは下記であってますか? > // 書き込むシートを取得 > let sheet = SpreadsheetApp.getActive().getSheetByName('全案件'); また、添付画像のシート記載内容も「全案件」シートのものでしょうか?
pochi-_-

2022/05/25 01:37

失礼しました シートA=全案件です また、自己解決できました Gmailの本文をスプレッドシートに書き込む際、なぜか改行コードが含まれておりました 改行コードを取り除いたところ他シートからのquery関数を利用して表示することができるようになりました ご協力いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問