Kirim email ketika sel berisi nilai tertentu

Saya sedang mengerjakan Formulir Google yang memungkinkan karyawan kami mengirimkan pemeriksaan lapangan terhadap peralatan mereka. Saya memiliki skrip yang mengambil formulir tanggapan dan membuat lembar baru berdasarkan tanggal dan nomor unit spesifik peralatan. Pengguna memeriksa daftar periksa dan memilih "Baik" atau "Perlu Perbaikan" untuk setiap item dalam daftar. Mereka juga dapat menambahkan komentar dan mengunggah gambar mengenai masalah apa pun.

Saya mencoba agar skrip secara otomatis mengirim email jika "Perlu Perbaikan" dipilih untuk pemeriksaan apa pun, serta jika pengguna menambahkan komentar atau gambar. Dengan cara ini kita tidak perlu membuka setiap lembar yang dikirimkan untuk mengetahui apakah ada perbaikan yang diperlukan. Yang saya alami hanyalah tidak mengirim email dan saya tidak tahu alasannya. Bantuan apa pun sangat dihargai!

Ini skrip saya saat ini:

 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 sumber
comment
Berikan contoh minimal yang dapat direproduksi.   -  person TheMaster    schedule 06.12.2018


Jawaban (1)


Fungsi untuk mengirim email adalah:

GmailApp.sendEmail(email, subject, body);

Coba ubah

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.")
    }
}

hanya sebagai berikut:

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

Sepertinya Anda masih memiliki beberapa pekerjaan tambahan yang harus dilakukan, misalnya. untuk membuatnya dikirim ke alamat email dari pengiriman formulir, bukan yang berkode keras.

person David Bieber    schedule 05.12.2018
comment
Terima kasih David, saya baru saja mencoba ini dan tidak ada bug, tetapi tidak mengirim email - GmailApp tidak muncul dengan warna biru seperti yang saya yakini seharusnya... ada ide? - person Colin Grant; 05.12.2018
comment
MailApp juga dapat digunakan untuk mengirim email. - person Rubén; 05.12.2018