0

Gmail アカウントにあるレポートをいくつか取得しようとしていますが、正規表現を使用しようとする場合を除いて、すべて問題ないように見えます。

目標は、レポートから情報を取得してスプレッドシートに貼り付けることですが、いくつかのテストを行うと、gmail から何も取得されないことがあることがわかりました (メール本文をスプレッドシートに貼り付けると、2 つまたは 3 つ表示され、空白、20 通の電子メール、再び空白)、正規表現の結果として NULL を取得します。

誰かが私が間違っていることを説明できますか? これは、Google App Scripting Engine を使用する最初の 1 週間です。

前もって感謝します。

これがコードです。

function recopilarInformes() {
  var threads = GmailApp.search('label:informes');

  var messages;
  var ContentEmail;
  var reportDate,CFree,FFree;


  for (var i = 0; i < 20 /*threads.length*/; i++) {
    messages = threads[i].getMessages()
    reportDate = messages[0].getSubject().replace("Informe ","");
    ContentEmail = messages[0].getBody();

    CFree = /(\d+.\d+)\s.*GB/g(ContentEmail);
    FFree = /F<.td><td\s\w+\W+\w+.\w+.>\s(\d+.\d+)/(ContentEmail);

    Logger.log(reportDate);
    Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail));

  }

編集

Googleアプリスクリプトからgmailオブジェクトを正確に使用する方法がわからないにもかかわらず、正規表現は私の目標を達成するための最良の方法ではないという結論に達しました。

これが現在のコードです

    function recopilarInformes() {
  var threads = GmailApp.search('label:informes');
      Logger.log(threads);
      Logger.log(threads[0].getMessages());
      Logger.log(threads[0].getMessages().length);
      var messages;// = threads[0].getMessages();
      var ContentEmail;// = messages[0].getBody();
      var reportDate,CFree,FFree;


      for (var i = 0; i < threads.length; i++) {
        messages = threads[i].getMessages()
        reportDate = messages[0].getSubject().replace("Informe ","");//creo si hubiera más mensajes en la conversación (thread) habría más entradas en este array, que ahora mismso solo contiene una cosa
        ContentEmail = messages[0].getBody();

        Logger.log(reportDate);
       // Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail));
        actualData = ContentEmail.split("------------ Espacio en las unidades -----------")[1];
        actualData = actualData.replace(/([^ 0-9,])/g,"").trim().replace(/\s+/g," ").split(" ");
        insertValue([reportDate,actualData[0],actualData[1]]);
      }



    }
4

1 に答える 1

0

for in ループを使用します。

function recopilarInformes() {
  var threads = GmailApp.search('label:informes');
  var message, reportDate;

  for (var i in threads) {
    message = threads[i].getMessages();
    reportDate = message[0].getSubject();

    Logger.log(reportDate);
  }
}
于 2012-11-07T20:36:07.507 に答える