首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用在GAS中不起作用的getThreads代码

使用在GAS中不起作用的getThreads代码
EN

Stack Overflow用户
提问于 2017-03-03 05:33:03
回答 2查看 164关注 0票数 1

我运行这段代码,但它什么也不做。没有错误,没有输出。任何帮助都将不胜感激!

我已经尝试更改everything...the范围、工作表的名称、appendRow和setValues。我已经为开始线程和最大线程数添加了0,10,删除了第一个线程,loop...nothing到目前为止还起作用。

代码语言:javascript
运行
复制
function myFunction() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sheet = ss.getSheetByName("NewEmails"); 
  var range = sheet.getRange(1,1,25,25);


  //.appendRow("this function works a little");

  var threads = GmailApp.getInboxThreads(0,10); // get first thread in inbox
  //var message = thread.getMessages()[0]; // get first message

  //var threads = label.getThreads();

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

    for (var j=0; j<10; j++) //messages.length
    {

      var dat = messages[j].getDate();
      var sndr = messages[j].getFrom();
      var rcpnt = messages[j].getTo();
      var sub = messages[j].getSubject();
      var msg = messages[j].getBody();

      var target = [dat,sndr,rcpnt,msg, sub, dat];

      sheet.getRange(1,1,25,25).setValues(target);

      //.appendRow([dat,sndr,rcpnt,msg, sub, dat]); DOES NOT WORK FOR SOME REASON BUT IS PREFERED METHOD
    }
      //threads[i].removeLabel(label);
  }
}
EN

回答 2

Stack Overflow用户

发布于 2017-03-03 06:38:06

我以前从来没有玩过这个游戏,但我最终还是让它起作用了。

代码语言:javascript
运行
复制
function onOpen()
{
  SpreadsheetApp.getUi().createMenu('My Tools')
    .addItem('Get My Messages', 'MyMessages')
    .addToUi();
}

function MyMessages()
{  
  var threads = GmailApp.getInboxThreads();
  var s = '';
  for(var i = 0; i < threads.length; i++) 
  {
    var msg = threads[i].getMessages();
    for(var j = 0; j < msg.length;j++)
    {
      s += 'Message' + j+1 + '<br />';
      s += msg[j].getFrom() + '<br />';
      s += msg[j].getBody() + '<br />';

    }

  }
  dispStatus('My Messages', s , 800 , 400);  
}

function dispStatus(title,html,width,height)
{
  var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
  var width = typeof(width) !== 'undefined' ? width : 800;
  var height = typeof(height) !== 'undefined' ? height : 400;
  var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
  var htmlOutput = HtmlService
     .createHtmlOutput(html)
     .setWidth(width)
     .setHeight(height);
 SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
} 

我没有试图把它放在电子表格中,但我想这是留给读者的练习。但请记住,当您在一个范围中使用setValues时,源的大小必须等于目标的大小,在我看来,它们并不是这样的。

代码语言:javascript
运行
复制
var target = [dat,sndr,rcpnt,msg, sub, dat];
sheet.getRange(1,1,25,25).setValues(target);

目标是1行乘5列,而您的目的地是25x25,所以我猜这是不可能的。在html对话框中显示它们的另一个优点是它们已经是html格式的。

票数 1
EN

Stack Overflow用户

发布于 2017-03-04 14:36:51

对这段代码有帮助的一件事是,我意识到setValues()和setValue()有很大的不同。这两个可以与一个范围一起使用。必须在工作表级别使用appendRow()。

您可以说: sheet.appendRow(),但不能说range.appendRow()。希望这对某些人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42566398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档