2012-11-17 67 views
4

有沒有將Google文檔嵌入到電子郵件中的好方法?Google應用腳本 - 將文檔附加/嵌入到電子郵件中

我可以開始:

var doc = DocumentApp.openById('1P_KZr_xpg.....xntBqvQ'); 

我已經試過這些方法:

A)MailApp.sendEmail('[email protected]', doc.getName(), doc.getText()); 從文檔的原始文本形成電子郵件的正文......所有格式都將丟失。

B)MailApp.sendEmail('[email protected]', doc.getName(), doc.getUrl());文檔的URL是消息的主體。直到您點擊源文檔才能看到文檔的內容。

C)MailApp.sendEmail('[email protected]', doc.getName(), '', { htmlBody: HtmlService.createHtmlOutput(doc.getAs('blob') });這似乎很有希望,但出現錯誤:「請求的不支持的轉換」。

是否有其他方式嵌入文檔?

有什麼方法可以獲取文檔的HTML版本?一旦我有了,我可以使用htmlBody來插入它。

回答

5

這已經回答了幾次,這裏是代碼originally suggested由恩裏克阿布雷烏(不關心評論說,這是行不通的,但它確實!):

function emailDocTest() { 
  var id = 'Doc-Very-Long-ID-Here'; 
  var url = 'https://docs.google.com/feeds/'; 
  var doc = UrlFetchApp.fetch(url+'download/documents/Export?exportFormat=html&format=html&id='+id, 
                              googleOAuth_('docs',url)).getContentText(); 
  var emailAdress = Session.getEffectiveUser().getEmail(); 
  MailApp.sendEmail(emailAdress, 'test doc send by mail as html', 'html only', {htmlBody:doc}); 
} 

function googleOAuth_(name,scope) { 
  var oAuthConfig = UrlFetchApp.addOAuthService(name); 
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope); 
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); 
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); 
  oAuthConfig.setConsumerKey('anonymous'); 
  oAuthConfig.setConsumerSecret('anonymous'); 
  return {oAuthServiceName:name, oAuthUseToken:"always"}; 
} 

請注意, googleOAuth_函數需要一個特殊的授權,只能使用腳本編輯器來運行該函數(不是來自UiApp或菜單),而且該函數不會出現在'run'列表中,因爲它的下劃線(這是它的工作原理),所以在腳本編輯器中至少運行一次,並記住,如果/最終與其他人共享應用程序。詳情請參閱feature request 677

+0

這真的太糟糕了,這是唯一的選擇。我已經有了這個文件,所以很奇怪我必須重新閱讀它。該API具有getAs(contentType),但沒有說明什麼被允許作爲「contentType」。 –

+0

你是什麼意思?如何/爲什麼會有這個問題? –

+0

API現在只有getAs(contentType)只需要「application/pdf」。 –

相關問題