我编写了一个脚本,当发布为网络应用时,会计算收件箱中的电子邮件数量,以及最早发送的邮件的日期,并输出为.csv:
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类指向共享邮箱而不是我自己的?
答案 0 :(得分:1)
所以我认为您的共享邮箱应该只是一个普通的旧谷歌用户。如果是这样,那么就没有理由不能为他们设置谷歌硬盘。
此问题的第二部分是您要使用此脚本创建的内容,如果您只想要共享邮箱中的信息,则可以:
User accessing the web app
(在Publish -> Deploy as web app...
中)运行,并在运行时确保以共享用户身份登录。现在,如果你想要结合两个信息源,这是一个不同的故事,我不相信你可以在同一个脚本中运行两个不同的用户。我也测试了库,他们似乎使用相同的会话用户,所以据我所知,你真的只有一个选项。创建一个webapp脚本来提取信息并将其作为共享用户运行,并将其作为json / xml返回(如果只是附加它,甚至是CSV),然后使用HTTP调用(使用URLFetchApp)现有脚本,用于检索该信息并对其进行处理,并使用它执行任何操作(以您的身份运行)。这将是一个缓慢的选择,但至少它会做你想要的。