我基本上修改了UI google文档中的UI,以使其适应我的需求。我有一个从用户获取信息的面板,然后它应该替换模板中的一些单词,最后发送一封电子邮件。这就是我到目前为止所写的内容。一切都很好,只是它使替换不起作用的部分(var Time = setValue(e.parameter.userName)但我不确定是否正确或我应该使用不同的东西。我尝试使用var Time = emailTemplate。取代( “TIME”,e.parameter.userName));但我得到参考错误,e未定义且未运行。任何帮助,将不胜感激。
function onOpen() {
var subMenus = [{name:"test", functionName: "doGet"}];
SpreadsheetApp.getActiveSpreadsheet().addMenu("texts", subMenus);}
function doGet() {
var doc = SpreadsheetApp.openById("SP ID");
var app = UiApp.createApplication().setTitle('TITLE1');
var grid = app.createGrid(10, 10);
grid.setWidget(0, 0, app.createLabel('Time PST'));
grid.setWidget(0, 1, app.createTextBox().setName('Time'));
grid.setWidget(1, 0, app.createLabel('Minutes have passed'));
grid.setWidget(1, 1, app.createTextBox().setName('Minutes'));
grid.setWidget(2, 0, app.createLabel('Enter Name'));
grid.setWidget(2, 1, app.createTextBox().setName('Name'));
// Create a vertical panel..
var panel = app.createVerticalPanel();
// ...and add the grid to the panel
panel.add(grid);
var button = app.createButton('Submit');
var handler = app.createServerHandler('b');
handler.addCallbackElement(grid);
button.addClickHandler(handler);
// Add the button to the panel and the panel to the application, then display the application app
panel.add(button);
app.add(panel);
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.show(app);
}
function b() {
var doc = SpreadsheetApp.openById("SP ID");
var emailTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Templates").getRange("A1").getValue() ;
var address = "albdominguez25@gmail.com";
var Time = setValue(e.parameter.Time);
var emailSubject = "Subject";
emailTemplate = emailTemplate.replace("TIME",Time);
MailApp.sendEmail(address, emailSubject, emailTemplate);
Browser.msgBox("Your Email has been sent!");
// Clean up - get the UiInstance object, close it, and return
var app = UiApp.getActiveApplication();
app.close();
// The following line is REQUIRED for the widget to actually close.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.show(app);
}
答案 0 :(得分:1)
看起来你走在正确的轨道上,Srik的答案是正确的,但听起来你不需要或不想做第二部分。但您需要在TextBox上setID("Time")
才能获取其中的数据e.parameter.Time
。
你应该改变
var Time = setValue(e.parameter.Time);
到
var Time = e.parameter.Time;
这应该适合你,虽然我会采用完全不同的方式,并将HTMLService与模板文件一起使用,并将脚本作为独立应用程序发布。
答案 1 :(得分:0)
我假设您想要在单击按钮时更改TextBox'Time'中的文本。
首先,您需要在文本框中设置ID
function doGet(){
...
grid.setWidget(0, 1, app.createTextBox().setName('Time').setid('Time');
...
}
然后,您需要在TextBox上使用setText()来更改值
function b(e){ // Note the argument 'e'
...
var Time = app.getElementById('Time').setText(e.parameter.Time);
...
}