前提・実現したいこと
GASを用いて、商品名が書かれたメールを受信したら、ローカルに保存されているエクセルの表を参照して対応している数字を自動で返信したいです。
※エクセルの表は、A列に商品名、B列に現在庫になっています。
エクセルは1時間に自動で一度更新するように実装済です。
実装のイメージは下記のようにした。
(1. GASのトリガー機能を用いて数分以内の自動返信を行いたい。
(2. GASが起動したら、未読メールの送信者(from)と本文(body)を取り出す。
---未実装部分↓--------------------------------
(3. bodyの内容を受け取り、ローカルのエクセル(xls)より参照する。
ただし、ExcelVBAやBATやVBSでGASから起動できないと書いてあったので、
Google Driveへのアップロードを行い参照したい。
・ローカルからgoogleドライブへアップロードの処理 ※パス渡して自動で行う形式 ・アップロード済のエクセルを参照する方法。 ・参照し終わったらドライブから削除
この上記の点を書き方の例を教えて頂きたいです。
---未実装部分↑--------------------------------
(4. メールに書かれた商品名に対応する在庫数を文字若しくは添付資料にて送信する。
(5. 既読にする
どなたか助けて下さい。
お願い致します。
1function getNewMail() { 2 //履歴保存用スプレッドシート指定 3 var sheetObj = SpreadsheetApp.openById('--------------------------------'); 4 var sheet = sheetObj.getSheetByName('history'); 5 6 7 // 未読のスレッドを検索対象にする 8 var searchCondition = 'is:unread'; 9 var threads = GmailApp.search(searchCondition, 0, 100); 10 var row =2 11 12 for (var i = 0 ; i < threads.length; i++) { 13 var msgs = GmailApp.getMessagesForThread(threads[i]); 14 15 for (var j = 0; j < msgs.length; j++) { 16 Logger.log(msgs[j].getSubject()); 17 } 18 //情報を抽出 19 20 var id = msgs[i].getId() 21 var date = msgs[i].getDate(); 22 var from = msgs[i].getFrom(); 23 var body = msgs[i].getBody(); 24 25 sheet.getRange(row, 1).setValue(id); 26 sheet.getRange(row, 2).setValue(date); 27 sheet.getRange(row, 3).setValue(from); 28 sheet.getRange(row, 4).setValue(body); 29 30 //返信の作成 31 reply_mail (from,body) 32 33 row++; 34 // スレッドを既読にする 35 threads[i].markRead(); 36 } 37} 38 39function reply_mail (from,body){ 40 var title = 'GASによるメール送信'; 41 var honbun ='本文は考察中'; 42 MailApp.sendEmail(from, title,honbun); 43 44}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。