如何在Google脚本中提取项目属性?

时间:2017-07-05 20:54:52

标签: javascript google-apps-script google-sheets

我目前正在开发一个谷歌脚本,当相关电子表格中的项目标记为完成时,该脚本会通过电子邮件发送给指定用户。第一个函数在编辑电子表格时触发,并检查第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"
    );
}

How to define global variable in Google Apps Script

2 个答案:

答案 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