email - 根据单元格值发送电子邮件
问题描述
电子邮件功能工作正常,但代码有以下错误:
SyntaxError:添加函数 checkValue 时输入意外结束(第 90 行,文件“Code.gs”)(最后一行)。
基本上,我们希望在编辑 D2 时自动发送电子邮件。我们希望这将消除每次帮助复制模板时允许发送电子邮件的权限的需要。
function checkValue () {
var check = sheet.getRange("D2").getValue();
var rangeEdit =e.range.getA1Notation();
if(rangeEdit == "D2") {
{
function email(checkValue) {
// Send the PDF of the spreadsheet to this email address
// Get the currently active spreadsheet URL (link)
// Or use SpreadsheetApp.openByUrl("<<SPREADSHEET URL>>");
var ss = SpreadsheetApp.getActiveSpreadsheet();
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_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());
MailApp.sendEmail(email, subject, body, {
htmlBody: body,
name:'class',
bcc: aid,
noReply: true,
attachments:[blobs]
});
}
解决方案
基本上,我们希望在编辑 D2 时自动发送电子邮件。
var rangeEdit =e.range.getA1Notation();
从我在这里看到的情况来看,您似乎正在尝试在单元格更改时发送电子邮件,可能是通过使用 onEdit 触发器。
你不能那样做。
OnEdit 属于简单触发器。简单的触发器不能调用需要授权的服务。在此处查看https://developers.google.com/apps-script/guides/triggers限制部分。
如果我对您尝试做的事情有误,请使用代码编辑您的帖子,因为“Carlos M”在他的回复中写道它无法编译。
推荐阅读
- visual-studio - ADO.NET 实体数据模型没有选项
- javascript - Javascript:在 For 循环中等待一个(或多个)条件
- java - 使用流获取二维数组中每列的结果
- bit-manipulation - Java 使用位运算符 & 将十进制转换为 12 位
- javascript - 如何在谷歌表格图表中使用 javascript 数组?
- node.js - 通过解析 util.inspect 在客户端记录节点
- java - 如何从 jshell 访问默认包中的 Java 类?
- c++ - 使用 STBI_Image OpenGL 加载图像时在 0x69ABF340 引发异常
- node.js - 在 MongoDB Server 3.0.15 上将 mongoose 版本从 3.8.22 升级到 4.3.2 后 findOneAndUpdate 不起作用
- terminology - 描述代码块(例如在脚本中)之间的空间的术语?