2015-08-18 36 views
2

我写了一个脚本,当作为一个web应用程序发布,将计算邮件的数量在我的收件箱,最早的已发送消息的日期一起,并输出为.csv:Google脚本如何从共享邮箱收集信息?

function doGet() { 
    // get all threads in inbox 
    var threads = GmailApp.getInboxThreads(); 
    var dataLength = threads.length 

    var earliestMessage = new Date(); 

    for (var y = 0; y < dataLength; y++) { 
    var message = threads[y] 

    //sets last message date in thread y 
    var msgDate = message.getLastMessageDate(); 

    //checks last message date to current value of earliestMessage, updates if necessary 
    if(msgDate.valueOf() < earliestMessage.valueOf()) { 
     earliestMessage = msgDate 
    } 
    } 

    //save to external files 
    return ContentService.createTextOutput(dataLength + '\n' + Utilities.formatDate(earliestMessage, 'GMT', 'dd/MM/yyyy')).downloadAsFile('emailData.csv'); 
} 

这工作正常,但我现在希望此脚本从我有权访问的共享邮箱中返回相同的信息。由于这是共享邮箱,因此我无法选择只访问其Google云端硬盘并在其中保存脚本(请让我知道是否我错了!),因此脚本只会返回有关我自己的帐户的信息。

我试图寻找类似的问题,但我已经找到了最接近的有以下几种,既不其中似乎有明确的解决方案:

脚本是否需要重写(如果有,如何?),还是有办法将GmailApp类指向共享邮箱而不是我自己的?

回答

1

所以我相信你的共享邮箱应该只是一个普通的旧谷歌用户。如果是这样,那么没有理由不能为他们设置谷歌驱动器。

这个问题的第二部分是你想从你的共享邮箱创建这个脚本,如果你只是想要的信息,你可以:

  • 将在共享用户的驱动器,并运行该脚本因为他们
  • 将脚本保留在驱动器中,将其设置为User accessing the web app(在Publish -> Deploy as web app...中),并在运行时确保您以共享用户身份登录。

现在,如果您想结合两种信息源,这是一个不同的故事,我不相信您可以在同一个脚本中运行两个不同的用户。我也测试了库,他们似乎使用同一个会话用户,所以据我所知,你真的只有一个选择。创建一个webapp脚本来提取信息并将其作为共享用户运行,并将其作为json/xml(如果您只是附加它,甚至是CSV)将其返回,然后在现有脚本中使用HTTP调用(使用URLFetchApp)来检索该信息并对其进行处理并根据您的需要进行处理(以您的身份运行)。这将是一个缓慢的选择,但至少它会做你想做的。