我正在尝试使用以下代码从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应用程序完成吗?
提前感谢您的帮助。
答案 0 :(得分:0)
变化:
htmlbody: output.getContent()
为:
htmlBody: output.getContent()
使用大写“B”