2015-08-18 39 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)來檢索該信息並對其進行處理並根據您的需要進行處理(以您的身份運行)。這將是一個緩慢的選擇,但至少它會做你想做的。