如何从谷歌表发送电子邮件的表作为一个PDF附件。

问题描述 投票:1回答:1

我有一个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();

  }
javascript email google-sheets spreadsheet email-attachments
1个回答
1
投票

我建议你使用应用程序脚本。

你作为表单和响应表的所有者,可以创建一个绑定脚本,并使用Gmail和表单服务来创建你所需的PDF,并将其发送给你的用户。

你也可以创建触发器来检查何时有新的响应被提交。


参考资料。


0
投票

我挖出了一个旧的例子,使用getAs()来发送一个文档,所以如果你只需要一个表,你只需要创建一个新的电子表格,包含你想要发送的信息。

var newSheet = SpreadsheetApp.create(Title,y,x);

在其中设置任何你想要的值,然后

var pdf = newSheet.getAs('application/pdf');
MailApp.sendEmail(email, subject, body, {attachments:[pdf]} );

我建议创建一个新的电子表格,因为你不能只转换一个标签到PDF。

© www.soinside.com 2019 - 2024. All rights reserved.