15 分ごとにトリガーされ、新しいメッセージの受信トレイ ラベルを監視する Google App Script を作成しました。ラベルは、特定の電子メール アドレスと特定の件名から送信された場合にのみ電子メールにラベルを付ける電子メール フィルターによって適用されます。スクリプトを実行すると、次のようになります。
- そのラベルが付いたメッセージがあるかどうかを確認します
- メールの本文を取得します
- で文を分割します
"<br />"
- 結果の配列をスプレッドシートに貼り付けます
- 受信トレイに表示されないように、受信トレイのラベルを削除します。
私が抱えている問題は、スクリプトが実行時にスプレッドシートに何も貼り付けず、それをスキップしてラベルを削除することです。手動でラベルをメッセージに追加すると、次にスクリプトを実行すると、すべての配列要素がスプレッドシートに完全に追加され、ラベルが削除されます。しかし、毎回ラベルを再適用する必要はありません。私はスクリプトを書くのが初めてなので、私のコードが受け入れられた基準に達していない場合は申し訳ありません。
function myFunction() {
//Get Email and split data into array
var NewPhy = GmailApp.getUserLabelByName("New Physician Request")
var TransPhy = GmailApp.getUserLabelByName("Transferred Physician Request")
var Threads = GmailApp.getUserLabelByName("New Physician Request").getThreads();
if (Threads.length > 0) {
var messages = Threads[0].getMessages()
var body = messages[(messages.length - 1)].getBody().split("<br />")
//Search, tag, and import values into spreadsheet
var Spreadsheet = SpreadsheetApp.openByUrl(" Spreadsheet URL here ");
var Sheet = Spreadsheet.getSheetByName("Sheet Name here").insertRowBefore(3);
var SiteElement = ArrayLib.find(body, -1, "Associated Customer Site Information:")
var Site = body[SiteElement + 1].replace(/[A-Z]{3}/gm, "").replace(/(<([^>]+)>)/igm, "").replace(/^[ \t]+/igm, "").replace(/</igm, "").replace(/>/igm, "").replace(/ /igm, "").replace(/"/igm, "").trim()
var A3 = Sheet.getRange("A3").setValue(Site).setBorder(true, false, false, false, false, false).setBackgroundRGB(239, 239, 239);
var ConsultantElement = ArrayLib.find(body, -1, "Marketing Consultant 1 =")
var Consultant = body[ConsultantElement].replace("Marketing Consultant 1 =", "").replace(/[A-Z]{3}/gm, "").replace(/(<([^>]+)>)/igm, "").replace(/^[ \t]+/igm, "").replace(/</igm, "").replace(/>/igm, "").replace(/ /igm, "").replace(/"/igm, "").replace(/^[ \t]+/, "").trim()
var C3 = Sheet.getRange("C3").setValue(Consultant).setBorder(true, false, false, false, false, false);
// Remove inbox label and add Transferred label
TransPhy.addToThread(Threads[0])
NewPhy.removeFromThread(Threads[0])
}