我目前正在开发一个谷歌脚本,当相关电子表格中的项目标记为完成时,该脚本会通过电子邮件发送给指定用户。第一个函数在编辑电子表格时触发,并检查第5列并在相应匹配时移动该行。第一个If语句检查第5列以查看它是否与“Completed”匹配,如果匹配则将其移动到“COMPLETED”表。我能够成功地通过电子邮件发送所需用户,但我也试图在电子邮件中包含所选行的第一列。
这导致我尝试使用项目属性,因为Google Scripts中无法使用全局变量。但是,在尝试提取测试属性时,它会破坏脚本。
是否有人知道如何更正我的代码以便能够将A列推送到一个函数中的项目属性并将其拉入单独的函数中?
使用项目属性的最初想法来自以下主题:Scott Hanselmann
谢谢!
function onEditTrigger(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange()
// Below sends a completed project from the IN PROGRESS sheet to the COMPLETED sheet
if(s.getName() == "IN PROGRESS" && r.getColumn() == 5 && r.getValue() == "Completed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("COMPLETED");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
// Send an email when a project is marked complete
sendEmail();
}
// Below sends a completed project from the COMPLETED sheet to the IN PROGRESS sheet
if(s.getName() == "COMPLETED" && r.getColumn() == 5 && (r.getValue() == "In Development" || r.getValue() == "On Hold" || r.getValue() == "Delayed")) {
var row2 = r.getRow();
var numColumns2 = s.getLastColumn();
var targetSheet2 = ss.getSheetByName("IN PROGRESS");
var target2 = targetSheet2.getRange(targetSheet2.getLastRow() + 1, 1);
s.getRange(row2, 1, 1, numColumns2).moveTo(target2);
s.deleteRow(row2);
}
}
// Code that establishes desired emails, subject
function sendEmail() {
var project = PropertiesService.getScriptProperties().getProperty('project');
var subject = "Learning Solutions project has been completed: " + project;
var emailAddress = "test@email.com";
MailApp.sendEmail(emailAddress,subject,"This is a test"
);
}
答案 0 :(得分:0)
Google Apps脚本支持全局变量,请参阅Code.gs
的简单示例:
var myGlobalVar = 'This is global var value';
function myFunction()
{
Logger.log(myGlobalVar);
}
运行功能myFunction
,然后从脚本编辑器菜单中选择查看 - 日志,您将看到
[17-07-06 00:12:58:691 EEST]这是全局变量值
答案 1 :(得分:0)
我在调整后附加了代码,允许我动态填写我发送的电子邮件的主题,根据要移动到COMPLETED工作表的行的第一项。
script:
- sudo env "PATH=$PATH" npm test