当前位置: 首页 > 知识库问答 >
问题:

如何从google sheet发送电子邮件,并将该工作表作为PDF附件

乐正秦斩
2023-03-14

我有一个谷歌表单,有两个表单,表单回复和报告:见这里

当表单提交报表时,更改响应表的最后一个表单或最后一行。我想发送一封电子邮件给提交表格的人,并在发送电子邮件后将报告表作为PDF附加在e栏中:请参阅此处

电子邮件发送至:表格回复栏b主题:一些文本和表格回复栏a抄送:ABC@yahoo.com正文:部分文本和表格答复f列附件: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();

        }
  }

我从电子表格中获取url

我重写了代码,但得到错误“TypeError:report.getAs不是函数(第36行,文件“code”)”

   function onSubmit(e){


 var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getAet();
 
  var calculate = ss.getSheets()[2];
 var Responses = ss.getSheets()[0]; 
var report = ss.getSheets()[1];


  


 var sh = sheet.getRange(lastRow, 8).getValue();
 


   var cell = calculate.getRange("b2");
  cell.setFormula(sh); 
SpreadsheetApp.flush();
 

  var email = sB;
  var subject = 
  var body = se;
  
  var calculate = ss.getSheets()[2];
 vafunction onSubmit(e){
  Logger.log('submit ran');


  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 se = sheet.getRange(lastRow, 5).getValue();
v
  cell.setFormula(sh); 
SpreadsheetApp.flush();
 

  var email = sB;

  var body = se;
  
  var calculate = ss.getSheets()[2];
 var Responses = ss.getSheets()[0]; 

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 pdf = report.getAs('application/pdf');

 
     
      MailApp.sendEmail(t ,body,  {attachments:[pdf]});
     sf.setvalue("EMAIL_SENT");
      
          SpreadsheetApp.flush();
  
  }

共有2个答案

慕通
2023-03-14

我找到了一个旧的例子,并使用getAs()发送文档,因此如果您只需要一张工作表,您只需创建一个包含您想要发送的信息的新电子表格。

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

在其中设置所需的任何值,然后

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

我建议创建一个新的电子表格,因为您无法将一个选项卡转换为PDF格式。

益炜
2023-03-14

我建议您为此使用应用程序脚本。

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

您还可以创建触发器来检查何时提交新响应。

参考资料:

>

  • 表格服务

    Gmail服务

    应用程序脚本表单快速启动

    触发器

  •  类似资料:
    • 使用Prestashop 1.6 我有以下代码来生成PDF 我有以下代码发送电子邮件: 现在,我尝试创建一个脚本,生成PDF并将其作为电子邮件附件发送: 使用TCPDF发送电子邮件附件 电子邮件随附件发送,但我无法用pdf查看器打开文件。

    • 我想用mailto标签发送电子邮件,附带一个pdf文件作为附件。mailto标记使用以下方法打开邮件窗口,其中包含传递的参数,如to和subject: 但是,附件作为一个参数不起作用。请建议如何在手机中发送pdf附件。 谢啦

    • 问题内容: 我创建了一个函数来获取当前网页的屏幕截图,并使用html2canvas和jsPDF将其保存为PDF。以下是我的代码: 通过使用上面的代码,我可以下载文件并将其保存在本地。但我想直接使用php脚本通过电子邮件发送生成的pdf。 以下是在php脚本中发布图像的代码,该图像将作为电子邮件发送: 但是如何在参数中发布生成的pdf ? 请为此提出任何解决方案。 问题答案: 请检查代码- 我希望它

    • 我正在使用TCPDF库在我的CakePHP应用程序中创建发票。如果我转到,我的view.ctp包括在浏览器中生成和显示pdf的代码。我想添加发送PDF作为电子邮件附件的能力,所以我创建了动作,并将代码从view.ctp复制到电子邮件模板中。 现在我被卡住了,我不知道如何在附加PDF之前先生成它。在我的view.ctp页面模板的末尾,我使用 它将pdf发送到浏览器中查看,而不创建文件。如果使用“F”

    • 我有谷歌发票电子表格,我用vlookup公式从其他(数据)表中获取数据。只有我需要在发票表中输入行号。所以我创建了一个循环脚本,其中数据表中的自动行号将输入到发票表中,并发送带有PDF附件的电子邮件。当运行该脚本时,请正确输入每行的行号,但电子邮件不会发送。