4

Googleドキュメントをメールに埋め込む良い方法はありますか?

私は始めることができます:

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

私はこれらのアプローチを試しました:

A)MailApp.sendEmail('john@abc.com', doc.getName(), doc.getText()); ドキュメントの生のテキストがメールの本文を形成します...すべてのフォーマットが失われます。

B)MailApp.sendEmail('john@abc.com', doc.getName(), doc.getUrl());ドキュメントへのURLはメッセージの本文です。クリックしてソースドキュメントに移動するまで、ドキュメントのコンテンツは表示されません。

C)MailApp.sendEmail('john@abc.com', doc.getName(), '', { htmlBody: HtmlService.createHtmlOutput(doc.getAs('blob') });これは有望に思えますが、エラーが発生します:「サポートされていない変換が要求されました。」

ドキュメントを埋め込む他の方法はありますか?

ドキュメントのHTMLバージョンを取得する方法はありますか?それができたら、htmlBodyそれを挿入するために使用できます。

4

1 に答える 1

5

これはすでに数回回答されています。これは、 Henrique Abreuによって最初に提案されたコードです(機能しないというコメントは気にしないでください、機能します!):

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またはメニューからではなく)関数を実行するためにスクリプトエディターを使用してのみアクティブ化できる特別な認証が必要であり、この関数は「実行」リストに表示されないことに注意してください。名前の最後にアンダースコアを付けると(これが機能するように意図されています)、スクリプトエディターから少なくとも1回実行し、最終的にアプリを他の人と共有する場合は覚えておいてください。詳細については、機能リクエスト677を参照してください。

于 2012-11-17T08:09:45.947 に答える