IT仕事

GoogleSpreadSheet上の注文番号をキーにGASでGmailのスレッドにラベルを付加

投稿日:2021年10月6日 更新日:

Gmailにあるメールから、スプレッドシートに記入してある注文番号と、注文入力時につけられた注文ラベルをもとに、スレッドを検索して、検索結果に対して新たなラベル付けをしたかった。

参考Webをもとに、作ったGASが、以下。

[code]
function AddOrderLAbel() {
//スプレッドシートを取得し
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//スプレッドシート内のシートを取得します。 ex)シート名「注文番号」
var sheet = spreadsheet.getSheetByName(“注文番号”);
//シート内の値を取得するにはgetRange(x,y).getValue()を使います
var value = sheet.getRange(2,1,sheet.getLastRow() – 1).getValues();

var strTerms = ‘label:A注文 subject:{‘ + value.join(” “) + ‘}’; // Gmailでの検索キーワード
//console.log(strTerms);
var myThreads = GmailApp.search(strTerms);

// スレッドを一つずつ取り出す
myThreads.forEach(function(thread) {
// スレッド内のメール一覧を取得
var messages = thread.getMessages();
// メールを一つずつ取り出す
messages.forEach(function(message) {
// スレッドにラベルを付ける
var label = GmailApp.getUserLabelByName(‘2.Pere’); // 既存のラベルでないと失敗するので注意
thread.addLabel(label);
});
});
}
[/code]

参考web: 
Google Apps Scriptとラベルで実現する管理業務のすゝめ | キャスレーコンサルティング株式会社
【GAS】Gメールのラベル機能まとめ【サンプルソース付】 | 快 ブログ

Googleスプレッドシートはこんなイメージ。

で、ここまで作って、テストしてうまく動いたので、後はタイマーで定期的に実行させればいいかなっ・・・と思ったのだが、タイミング悪く、もっといい方法に気が付いてしまった。

よく考えると、以下のようなスプレッドシートに作っておいて、文字の入ったセルを範囲選択してコピーし、Gmailの検索ボックスにペーストしたら、アナログ作業ながら検索までは、できる。


で、結果をもとに、好きなラベルをつけたり、不要なラベル削除したり、としたほうが良いのではないか。
プログラム化・システム化せずに、現場でマニュアルコントロールが可能なようにしておいた方が、今回はよいだろう。

なので、残念ながら、せっかく作ったコードはお蔵入りになりそう。

-IT仕事

執筆者:

関連記事

no image

AccessのデータをGoogleスプレッドシートに表示する

会社のネットショップで、お客様から電話で荷物の出荷状況について問い合わせがあった場合に、現状ではすぐに対応できていなかった。 荷物の伝票番号は、クロネコヤマトのB2のソフトか、あるいはAccessの業 …

no image

Amazonツール注文情報取得シートでListOrderで想定しない値エラー

会社では商品をAmazonでセラーとして販売している。 宅急便の伝票を作るときに注文情報(ListOrders)をExcelでCSVで出力できないかなあと、何かのツールを探していて、以下にたどり着いた …

Googleドキュメントの共有したスプレッドシートが表示できない

困った現象: ・ウェブに一般公開設定したスプレッドシートが、ログアウトした状態で、共有できない。 ・共有設定をしているにもかかわらず、共有リンクを開こうしようとするとログイン画面に転送される。 ・スプ …

no image

会社の人間が使うGISソフトを選定している。

ArcExplorer 9.2 ヘルプが英語。地図ファイルをどうセットアップしていいのか不明。 TNTlite メニューから英語でさっぱり。 カシミール 結構気に入った。ただし、データの重ねあわせがで …

PhotoshopElementsで写真の角を丸くする

方法を見つけるのに2時間ほどかかってしまったので備忘録・・・。 1.写真をCtrl+Aで全選択。 2.選択範囲-選択範囲を変更-境界線-10px。境界線が選択される 3.選択範囲-選択範囲を変更-滑ら …