如何通过 Web App 发送谷歌表格电子邮件?

时间:2021-01-20 20:26:11

标签: google-apps-script google-sheets

我的 javascript 工作正常,但我正在尝试创建一个模板,该模板将被多个人复制。模板 javascript PDF 本身并发送给指定的人。问题是当模板被复制时,它让你允许权限。我们希望电子邮件从一封特定的电子邮件发送,以防止出现配额问题。我们想通过 Web App 部署 javascript 代码。基本上模板将链接到网站以从网站发送电子邮件。我该怎么做?我尝试了几种方法,但没有任何效果。

function doGet(e) {
  var id = e.parameter.clientID;
var ss = SpreadsheetApp.openById("ID");
 
  var sheet = ss.getSheetByName("ClassA")
   
  var lrow = sheet.getLastRow()
   
 
  var name = sheet.getRange("E4").getValue();
  var aid = sheet.getRange("E3").getValue();
  var email = sheet.getRange("E5").getValue();
  var pemail = sheet.getRange("E2").getValue();
 
  var period = sheet.getRange("C1").getValue();
 var og= sheet.getRange("D2").getValue();
 
 



  // Subject of email message
  var subject = "Grade Summary | " + og +"- " + period;

  // Email Body can  be HTML too with your logo image - see ctrlq.org/html-mail
  var body = "Hi " + name + ", "+ "<br><br> Please find the grade summary  attached for " + period + ". <br><br>  Let us know if you have any questions.<br><br>  Thank you,<br><br> " + aid;
     
  var aliases = GmailApp.getAliases()
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array
 
  // Base URL
  var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace(ss.getId());

  /* Specify PDF export parameters
  From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
  */

  var url_ext = 'exportFormat=pdf&format=pdf'        // export as pdf / csv / xls / xlsx
  + '&size=letter'                       // paper size legal / letter / A4
  + '&portrait=True'                    // orientation, false for landscape
  + '&fitw=true'           // fit to page width, false for actual size
  + '&sheetnames=false&printtitle=false' // hide optional headers and footers
  + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
  + '&fzr=false'                         // do not repeat row headers (frozen rows) on each page
  + '&gid=';                             // the sheet's Id

  var token = ScriptApp.getOAuthToken();


  //make an empty array to hold your fetched blobs  
  var blobs;


    // Convert your specific sheet to blob
    var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
      headers: {
        'Authorization': 'Bearer ' +  token
      }
    });

    //convert the response to a blob and store in our array
    blobs = response.getBlob().setName(sheet.getName() + '.pdf');


  // Define the scope
  Logger.log("Storage Space used: " + DriveApp.getStorageUsed());
   
    MailApp.sendEmail(email, subject, body, {
      htmlBody: body,
 
      name:'class',
      bcc: aid,
      noReply: true,
      attachments:[blobs]    
    });  
}   

  
  // Base URL
  var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());

  /* Specify PDF export parameters
  From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
  */

  var url_ext = 'exportFormat=pdf&format=pdf'        // export as pdf / csv / xls / xlsx
  + '&size=letter'                       // paper size legal / letter / A4
  + '&portrait=True'                    // orientation, false for landscape
  + '&fitw=true'           // fit to page width, false for actual size
  + '&sheetnames=false&printtitle=false' // hide optional headers and footers
  + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
  + '&fzr=false'                         // do not repeat row headers (frozen rows) on each page
  + '&gid=';                             // the sheet's Id

  var token = ScriptApp.getOAuthToken();


  //make an empty array to hold your fetched blobs  
  var blobs;


    // Convert your specific sheet to blob
    var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
      headers: {
        'Authorization': 'Bearer ' +  token
      }
    });

    //convert the response to a blob and store in our array
    blobs = response.getBlob().setName(sheet.getName() + '.pdf');


  // Define the scope
  Logger.log("Storage Space used: " + DriveApp.getStorageUsed());
   
 return ContentService.createTextOutput('Sent Email').setMimeType(ContentService.MimeType.TEXT)
}

0 个答案:

没有答案
相关问题