ส่งอีเมลเมื่อเซลล์มีค่าเฉพาะ

ฉันกำลังจัดทำ Google ฟอร์มที่ช่วยให้พนักงานส่งการตรวจสอบอุปกรณ์ในภาคสนามได้ ฉันมีสคริปต์ที่ใช้การตอบกลับแบบฟอร์มและสร้างชีตใหม่ตามวันที่และหมายเลขหน่วยเฉพาะของอุปกรณ์ ผู้ใช้จะต้องผ่านรายการตรวจสอบและเลือก "ดี" หรือ "ต้องการการซ่อมแซม" สำหรับแต่ละรายการในรายการ พวกเขายังสามารถเพิ่มความคิดเห็นและอัพโหลดรูปภาพของปัญหาต่างๆ ได้

ฉันกำลังพยายามให้สคริปต์ส่งอีเมลโดยอัตโนมัติหากเลือก "ต้องการการซ่อมแซม" สำหรับการตรวจสอบใดๆ รวมถึงหากผู้ใช้เพิ่มความคิดเห็นหรือรูปภาพ วิธีนี้ทำให้เราไม่จำเป็นต้องเปิดเอกสารที่ส่งมาทุกแผ่นเพื่อดูว่าจำเป็นต้องซ่อมแซมหรือไม่ สิ่งที่ฉันมีคือแค่ไม่ส่งอีเมลและฉันก็ไม่เข้าใจว่าทำไม ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก!

นี่คือสคริปต์ปัจจุบันของฉัน:

 function onFormSubmit() {
  // onFormSubmit
  // get submitted data and set variables
  var ss = SpreadsheetApp.openById("*Spreadsheet Link*");
  var sheet = ss.getSheetByName("Submissions");
  var row = sheet.getLastRow();
  var Col = sheet.getLastColumn();
  var headings = sheet.getRange(1,1,1,Col).getValues();
  var lastRow = sheet.getRange(row, 1, 1, Col);
  var UnitNumber = sheet.getRange(row,3).getValue(); 
  var newSheet = sheet.getRange(row,4,Col).getValue();
  var fileExist = false;
  var drillSheet = null;
  var folder = DriveApp.getFoldersByName("Fraser Drill Inspections").next();
  var files = folder.getFilesByName(UnitNumber);
  var file = null;
  var employee = sheet.getRange(row,2);
  var checks = sheet.getRange(row, Col, 1, 20);
  // check if Drill has sheet
  while (files.hasNext())
  {
    fileExist = true;
    file = files.next();
    break;
  }
  if (fileExist) //If spreadsheet exists, insert new sheet
  {
    drillSheet = SpreadsheetApp.openById(file.getId());
    drillSheet.insertSheet("" + newSheet);
  }
  else //create new spreadsheet if one doesn't exist
  {
    drillSheet = SpreadsheetApp.create(UnitNumber);
    var ssID = drillSheet.getId();
    file = DriveApp.getFileById(ssID);
    file = file.makeCopy(UnitNumber, folder);
    DriveApp.getFileById(ssID).setTrashed(true);
    drillSheet = SpreadsheetApp.openById(file.getId());
    drillSheet.renameActiveSheet(newSheet);
  }
  // copy submitted data to Drill sheet

drillSheet.getSheetByName(newSheet).getRange(1,1,1,Col).setValues(headings);
  drillSheet.appendRow(lastRow.getValues()[0]);
  drillSheet.appendRow(['=CONCATENATE(B6," ",B5)']);
  drillSheet.appendRow(['=TRANSPOSE(B1:2)']);
  //Hide top rows with raw data
  var hiderange = drillSheet.getRange("A1:A3");
  drillSheet.hideRow(hiderange);
  //Widen columns
  drillSheet.setColumnWidth(1,390);
  drillSheet.setColumnWidth(2,700);

  //Send email if there are any comments or if anything needs repair
  if(lastRow.getValues() == "Needs Repair") {
    function SendEmail() {
      var ui = SpreadsheetApp.getUi();
      MailApp.sendEmail("[email protected]", "Drill Needs Repair", "This drill requires attention according to the most recent inspection report.")
    }
  }
 }

person Colin Grant    schedule 05.12.2018    source แหล่งที่มา
comment
ให้ตัวอย่างที่ทำซ้ำได้น้อยที่สุด   -  person TheMaster    schedule 06.12.2018


คำตอบ (1)


ฟังก์ชั่นในการส่งอีเมลคือ:

GmailApp.sendEmail(email, subject, body);

ลองเปลี่ยนดู

if(lastRow.getValues() == "Needs Repair") {
    function SendEmail() {
        var ui = SpreadsheetApp.getUi();
        MailApp.sendEmail("[email protected]", "Drill Needs Repair", "This drill requires attention according to the most recent inspection report.")
    }
}

เป็นเพียงสิ่งต่อไปนี้:

if(lastRow.getValues() == "Needs Repair") {
    GmailApp.sendEmail("[email protected]", "Drill Needs Repair", "This drill requires attention according to the most recent inspection report.");
}

ดูเหมือนว่าคุณยังมีงานที่ต้องทำเพิ่มเติม เช่น เพื่อให้ส่งไปยังที่อยู่อีเมลจากการส่งแบบฟอร์มแทนที่จะเป็นแบบฮาร์ดโค้ด

person David Bieber    schedule 05.12.2018
comment
ขอบคุณเดวิด ฉันเพิ่งลองสิ่งนี้และไม่มีข้อบกพร่อง แต่ไม่ได้ส่งอีเมล - GmailApp ไม่ปรากฏเป็นสีน้ำเงินอย่างที่ฉันเชื่อว่าควรจะเป็น... มีความคิดเห็นอะไรบ้าง - person Colin Grant; 05.12.2018
comment
MailApp ยังสามารถใช้เพื่อส่งอีเมลได้ - person Rubén; 05.12.2018