Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用Google应用程序脚本将电子邮件标记为已读_Google Apps Script - Fatal编程技术网

Google apps script 使用Google应用程序脚本将电子邮件标记为已读

Google apps script 使用Google应用程序脚本将电子邮件标记为已读,google-apps-script,Google Apps Script,我是谷歌应用程序脚本的业余爱好者 让这个脚本运行正常,但需要实现一个以上的功能。 现在我需要这个: 我需要将脚本读取的电子邮件标记为已读 我尝试了几种选择,但没有积极的结果 有人能帮我在脚本中实现它吗 function processInboxToSheet() { //var threads = GmailApp.getInboxThreads(); // Have to get data separate to avoid google app script limit! var

我是谷歌应用程序脚本的业余爱好者

让这个脚本运行正常,但需要实现一个以上的功能。 现在我需要这个: 我需要将脚本读取的电子邮件标记为已读

我尝试了几种选择,但没有积极的结果

有人能帮我在脚本中实现它吗

function processInboxToSheet() {
  //var threads = GmailApp.getInboxThreads();
  // Have to get data separate to avoid google app script limit!
  var start = 0;
  var threads = GmailApp.search("newer_than:1d AND is:unread AND label:eur OR label:desc",0,100); 
  var sheet = SpreadsheetApp.getActiveSheet();
  var result = [];

  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();

    var content = messages[0].getPlainBody();

    // implement your own parsing rule inside
    if (content) {
      var tmp;
      tmp = content.match(/\b([A-B\d][A-B\d]{4})\b/);
      var cod = (tmp && tmp[1]) ? tmp[1].trim() : 'Error';

      tmp = content.match(/\b(\d+[R])/);
      var prom = (tmp && tmp[1]) ? tmp[1].trim() : 'Error';

      tmp = content.match(/\b(\d{2}\.\d{2}\)\b/);
      var exp = (tmp && tmp[1]) ? tmp[1].trim() : 'Error';

      sheet.appendRow([cod, prom, exp]);

      Utilities.sleep(500);
    }


  }
};
函数processInboxToSheet(){
//var threads=GmailApp.getInboxThreads();
//必须单独获取数据以避免谷歌应用程序脚本限制!
var start=0;
var threads=GmailApp.search(“更新:1d和is:未读,标签:eur或标签:desc”,0100);
var sheet=SpreadsheetApp.getActiveSheet();
var结果=[];
对于(var i=0;i
如果我理解正确,您希望将每个线程中的第一条消息标记为已阅读。要做到这一点,你必须使用

现在,这是一个对应于的方法。因此,您需要从此类的实例调用此方法。现在,在代码中有变量
messages
,它是线程中的消息数组,而不是消息。要访问单个消息,必须指定数组的索引。线程中的第一条消息对应于
message[0]
,因此必须在这里使用
markRead

因此,您唯一需要做的就是在定义了
消息之后,在
for
循环中的任何位置添加以下代码行:

消息[0].markRead();
(如果只想在邮件包含正文内容时将邮件标记为已读,则必须在
If
块中添加上面的行。)

另外,如果您想将线程标记为已读(Gmail线程也有一个,您可以在
for
循环开头的这行代码处:

threads[i].markRead();

我希望这能有所帮助。

展示您迄今为止所做的尝试。您查看过
.markRead()吗
method?您可以将邮件标记为read via或thread via。如果您在执行此操作时遇到问题,请提供有关您希望完成的操作的更多详细信息。感谢响应人员。只在第一条邮件中粘贴代码。我查看了.markRead()但我的代码不适合我。很抱歉,我在这方面非常业余。@lamblichus我希望实现的是“简单”(但对我来说非常努力)脚本在第一个消息中解析了一些电子邮件的电子邮件数据,我只需要在分析邮件之后,将它们标记为Gmail中的阅读。非常感谢!Ouuuu MaM.!!IAMBLICHUS很多,非常感谢!工作得很完美!@ Markusen最受欢迎。也请考虑一下。这是有用的,因为这个社区依赖它来共享知识。dge给其他用户。我通过实现您的答案创建了一个新问题,并与此脚本相关。在相同的条件下,您将非常乐意帮助我,阅读所有电子邮件,而不仅仅是线程中的第一条消息?谢谢!