我有一个google表,有两个表。表格回复 和 报告:看这里
我想给提交表格的人发一封邮件,并在发送邮件后将报告单附在PDF上。发送邮件 在e列 见此
电子邮件到。表格回复栏bsubject: 一些文本 和表格回复栏acc:[email protected]。一些文本 和表格回复栏fattach:报告单为PDF格式。
我用了这个代码,但它不工作
function onSubmit(e){
Logger.log('submit ran');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var lastRow = sheet.getLastRow();
var sa = sheet.getRange(lastRow, 1).getValue();
var sB = sheet.getRange(lastRow, 2).getValue();
var sf = sheet.getRange(lastRow, 6).getValue();
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
var sheetgId = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetId();
var email = Session.getUser().getEmail();
var subject = SB;
var body = Sf;
var url = "https://docs.google.com/spreadsheets/d/e/..............................................................=0&single=true&output=pdf";
var result = UrlFetchApp.fetch(url)
var contents = result.getContent();
if (emailSent !== "EMAIL_SENT") {
MailApp.sendEmail(email,subject ,body, {attachments:[{fileName:SB+".pdf", content:contents, mimeType:"application//pdf"}]});
sheet.getRange().setValue("EMAIL_SENT");
SpreadsheetApp.flush();
}
}
我从电子表格>文件>发布到web>发布报告标签为pdf的网址。
我重写了代码,但得到了错误的"类型错误:report.getAs不是函数(第36行,文件 "Code")。"
function onSubmit(e){
Logger.log('submit ran');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var calculate = ss.getSheets()[2];
var Responses = ss.getSheets()[0];
var report = ss.getSheets()[1];
var lastRow = Responses.getLastRow();
var sa = sheet.getRange(lastRow, 1).getValue();
var sB = sheet.getRange(lastRow, 2).getValue();
var se = sheet.getRange(lastRow, 5).getValue();
var sf = sheet.getRange(lastRow, 6).getValue();
var sh = sheet.getRange(lastRow, 8).getValue();
var cell = calculate.getRange("b2");
cell.setFormula(sh);
SpreadsheetApp.flush();
var email = sB;
var subject = "راید ریپورت "+sa;
var body = se;
var calculate = ss.getSheets()[2];
vafunction onSubmit(e){
Logger.log('submit ran');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var calculate = ss.getSheets()[2];
var Responses = ss.getSheets()[0];
var report = ss.getSheets()[1];
var lastRow = Responses.getLastRow();
var sa = sheet.getRange(lastRow, 1).getValue();
var sB = sheet.getRange(lastRow, 2).getValue();
var se = sheet.getRange(lastRow, 5).getValue();
var sf = sheet.getRange(lastRow, 6).getValue();
var sh = sheet.getRange(lastRow, 8).getValue();
var cell = calculate.getRange("b2");
cell.setFormula(sh);
SpreadsheetApp.flush();
var email = sB;
var subject = "راید ریپورت "+sa;
var body = se;
var calculate = ss.getSheets()[2];
var Responses = ss.getSheets()[0];
var report = ss.getSheets()[1];
var pdf = report.getAs('application/pdf');
MailApp.sendEmail(email,subject ,body, {attachments:[pdf]});
sf.setvalue("EMAIL_SENT");
SpreadsheetApp.flush();
}
r Responses = ss.getSheets()[0];
var report = ss.getSheets()[1];
var pdf = report.getAs('application/pdf');
MailApp.sendEmail(email,subject ,body, {attachments:[pdf]});
sf.setvalue("EMAIL_SENT");
SpreadsheetApp.flush();
}
我建议你使用应用程序脚本。
你作为表单和响应表的所有者,可以创建一个绑定脚本,并使用Gmail和表单服务来创建你所需的PDF,并将其发送给你的用户。
你也可以创建触发器来检查何时有新的响应被提交。
参考资料。
我挖出了一个旧的例子,使用getAs()来发送一个文档,所以如果你只需要一个表,你只需要创建一个新的电子表格,包含你想要发送的信息。
var newSheet = SpreadsheetApp.create(Title,y,x);
在其中设置任何你想要的值,然后
var pdf = newSheet.getAs('application/pdf');
MailApp.sendEmail(email, subject, body, {attachments:[pdf]} );
我建议创建一个新的电子表格,因为你不能只转换一个标签到PDF。