Скрипт для автоматической маркировки электронной почты, если электронная почта отправлена ​​внутри, не работает должным образом - PullRequest
0 голосов
/ 27 марта 2020

Я пишу скрипт приложений Google, чтобы пометить электронные письма, идентифицированные как внутренние, через gsuite gmail logs. Журналы запрашиваются через bigquery, как вы можете видеть из кода ниже. Я не уверен, что я делаю неправильно. Я проверил разрешение, и все в порядке. Я действительно не хочу помещать результат запроса в лист и затем запрашивать значение «is_internal» из листов. Я открыт для любых предложений, которые сделают эту работу и улучшат код. Заранее спасибо за помощь. Я

function myFunction() {
  // Get the first message in the first thread of your inbox
  var message = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
  // Get its ID
  var messageId = message.getId();
  // Now fetch the same message using that ID.
  var messageById = GmailApp.getMessageById(messageId);
  // Should always log true as they should be the same message
  var messageIdRFC2822 = message.getHeader("Message-ID");
  // Get RFC 2822 message ID
  var subject = message.getSubject();
  Logger.log(subject);
  Logger.log(messageIdRFC2822);

  // input RFC2822 message id and subject to query BigQuery
  var projectId = 'gmail-gsuite-logs';
  var request = {
    query: 'SELECT message_info.connection_info.is_internal FROM `gmail-gsuite-logs.gmail_logs_dataset.daily_20200304` WHERE message_info.rfc2822_message_id="<xxxxxxxxxxxxx@mail.gmail.com>" LIMIT 1;',
    useLegacySql: false
  }
  var queryResults = BigQuery.Jobs.query(request, "gmail-gsuite-logs");
  var jobId = queryResults.jobReference.jobId;
  var jobTable = BigQuery.Jobs.getQueryResults(projectId, jobId);
  var jobList = BigQuery.Jobs.list(projectId);
  // Logger.log(jobId);
  // Logger.log(queryResults);
  // Logger.log(jobTable);
  // Logger.log(jobList);

  // Check on status of the Query Job.
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
  }

  // Get all the rows of results.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId, {pageToken: queryResults.pageToken});
    rows = rows.concat(queryResults.rows);
  }

  var data = new Array(rows.length);
    for (var i = 0; i < rows.length; i++) {
      var cols = rows[i].f;
      data[i] = new Array(cols.length);
      for (var j = 0; j < cols.length; j++) {
        data[i][j] = cols[j].v;
      }
    }
  var is_internal = Logger.log(data);
  return data.toString();
  if (is_internal == "[[true]]") {
    var label = GmailApp.getUserLabelByName("Safe");
    message.addLabel(label);
    Logger.log('Label added');
  }
  else {
    Logger.log('Label not added')
  }
}
...