首页 > 解决方案 > 将一张纸附加到另一张纸中提到的邮件ID

问题描述

  1. 我有一个包含多张工作表的电子表格,我有另一个工作表,其中 A 列包含邮件 ID,B 列包含工作表名称。
  2. 每当收到一张纸时,我都会使用相关的邮件 ID 检查必须将纸贴在哪里
  3. 例如,对于工作表名称 10001515ADC,我必须将工作表附加到邮件 ID guru3291@gmail.com 并邮寄。同样对于 10003810ADC,邮件 ID 是 kumaraguru@aai.aero

我工作的代码

 function email(){
 var heet= SpreadsheetApp.openById('1mbFTGxhvSbbttfkaezJpfU1TXNtJUPBvujREPi3yVwo');
 var mid = heet.getSheetByName('Sheet1');
 var getNames = mid.getDataRange().getValues();
 getNames.shift();
 var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var sheetsObj = {};
  for (var i = 1; i < sheets.length; i++) {
   sheetsObj[sheets[i].getSheetName()] = sheets[i];
   }
  Logger.log(sheetsObj);
 for (var i = 0; i < getNames.length; i++) {
  var r = getNames[i];
  if (r[1] in sheetsObj) {
  var ssID = ss.getId();
 Logger.log(ssID);
 var c =r[1];
 var p =ss.getSheetByName(c);
 p.activate;
 Logger.log(p);
 var sheetgId = ss.getActiveSheet().getSheetId();
 Logger.log(sheetgId);
 var sheetName = ss.getName();
 Logger.log(sheetName);
 }
 var token = ScriptApp.getOAuthToken();

 var email = r[0];
 var subject = "Important Info!";
 var body = "Latest Recency Report \n\nRegards,\n VOTV-ATM-OPS";

 var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" +  
 "&gid="+sheetgId+ "&portrait=true" + "&exportFormat=pdf";

 var result = UrlFetchApp.fetch(url, {
 headers: { 'Authorization': 'Bearer ' +  token}
 });
 var contents = result.getContent();
 MailApp.sendEmail(email,subject ,body, {attachments:[{fileName:sheetName+".pdf", content:contents, 
 mimeType:"application//pdf"}]});
 }
 }

在此处输入图像描述

标签: google-apps-scriptgoogle-apigoogle-sheets-api

解决方案


您的脚本发送了错误的表格,因为您的activate请求未通过

这是因为您指的是方法activate而不调用它

  • 要调用方法,您需要引用它,包括()括号
  • 所以,修改p.activate;p.activate();

另请参阅Javascript 中的 Fucniton 调用

边注

您无需激活工作表即可使用它。

线条

 var p =ss.getSheetByName(c);
 p.activate();
 var sheetgId = ss.getActiveSheet().getSheetId();

可以替换为

 var p =ss.getSheetByName(c);
 var sheetgId = p.getSheetId();

推荐阅读