使用HtmlService从电子表格创建电子邮件,但电子邮件为空

时间:2015-04-28 20:48:24

标签: javascript html google-apps-script

我正在尝试使用以下代码从Google电子表格生成电子邮件:

import org.restlet.data.Reference;
import org.restlet.engine.Engine;
import org.restlet.ext.jackson.JacksonConverter;
import org.restlet.resource.ClientResource;

public class MyDataService extends IntentService {
    private static final String CLOUD_DATA_ENDPOINT = "http://my.server-app.com";
    private ClientResource cr = null;

    protected void onHandleIntent(Intent intent) {
        cr = getClientResource();

        UserObj = retrieveUser("myuserid");
        AccountObj = retrieveAccount("myacctid");

        cr.release();
    }

    private ClientResource getClientResource() {
        Engine.getInstance().getRegisteredConverters()
                .add(new JacksonConverter());

        // Initialize the resource proxy.
        ClientResource cr = new ClientResource(CLOUD_DATA_ENDPOINT);

        // Workaround for GAE servers to prevent chunk encoding
        cr.setRequestEntityBuffering(true);
        cr.accept(MediaType.APPLICATION_JSON);

        return cr;
    }

    private UserObj fetchUser(String userID){
        Reference queryRef = new Reference(CLOUD_DATA_ENDPOINT);
        queryRef.addSegment("user");
        queryRef.addQueryParameter(QueryResource.FIELD_USER_ID, userID);
        cr.setReference(queryRef);

        UserResource resource = cr.wrap(UserResource.class);

        // may return null or empty object
        return resource.retrieve();
     }

    private AccountObj fetchAccount(String accountID){
        Reference queryRef = new Reference(CLOUD_DATA_ENDPOINT);
        queryRef.addSegment("account");
        queryRef.addQueryParameter(QueryResource.FIELD_ACCOUNT_ID, accountID);
        cr.setReference(queryRef);

        AccountResource resource = cr.wrap(AccountResource.class);

        // may return null or empty object
        return resource.retrieve();
    }
}

使用以下模板的html文件:

var SS = SpreadsheetApp.getActiveSheet();
var UI = SpreadsheetApp.getUi();

function onOpen() {
  UI.createMenu('Notifications').addItem('New notification', 'createNotification')
.addToUi();  
}

function createNotification() {
  var me = Session.getActiveUser();
  var output = HtmlService.createTemplateFromFile('email').evaluate();

  MailApp.sendEmail({
      to: me,
      subject: 'Test email',
      htmlbody: output.getContent()});
}

function getDate () {
  return SS.getRange(SS.getLastRow(), 1).getValue();
}

function getEscape () {
  return SS.getRange(SS.getLastRow(), 2).getValue();
}

代码运行,我收到测试电子邮件。但是,当我打开电子邮件时,没有内容。

我尝试了几种不同的方法。我已尝试使用<div> <h1>Escape Notification:</h1> <p>Date: <?= getDate();?></p> <p>Escape:</p> <p> <?= getEscape();?></p> </div> 功能以及上述方法将其作为HtmlOutput投放。

我担心我遗漏了一些非常基本的东西。我花了几个小时倾注了Apps Script API以及他们的示例和教程。我在这里找到的任何东西都不符合我的问题。我注意到的一件事是,所有示例都适用于.createHtmlOutputFromFile()doPost()次调用。这只能通过用户界面或Web应用程序完成吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

变化:

htmlbody: output.getContent()

为:

htmlBody: output.getContent()

使用大写“B”