我运行此代码并且它什么也没做。没有错误,没有输出。任何帮助将不胜感激!
我尝试过改变一切......范围,工作表名称,appendRow与setValues。我为开始和最大线程添加了0,10,删除了第一个for循环...到目前为止没有任何工作。
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);
}
}
答案 0 :(得分:1)
我以前从未玩过这个,但我终于开始工作了。
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用于范围时,源的大小必须等于目标的大小,并且它对我来说并不是他们所做的。
var target = [dat,sndr,rcpnt,msg, sub, dat];
sheet.getRange(1,1,25,25).setValues(target);
目标是1行乘5列,你的目标是25 x 25,所以我猜测它不会飞。在html对话框中显示它们的另一个好处是它们已经是html格式。
答案 1 :(得分:0)
帮助这段代码的一件事是我意识到setValues()和setValue()是一个很大的区别。这两个可以用于范围。必须在表单级别使用appendRow()。
你可以说:sheet.appendRow()但不是range.appendRow()。希望这有助于某人。