2015-03-13 12 views
5

Khi tôi thay đổi thứ gì đó trong bảng tính của mình, kích hoạt onEdit() chạy và tôi có thể thấy tất cả các hộp thư của tôi đã đặt trong mã của tôi.MailApp.sendEmail Error Message - "không có quyền gọi sendEmail"

chức năng của tôi dừng lại ở dòng này

MailApp.sendEmail(emailAddress, subject, message); 

Tôi chưa bao giờ thấy trường 'Email đã được gửi!' Tin nhắn, và nhận được một lỗi trong BẢNG THI HÀNH:

Bạn không có quyền để gọi sendEmail

Nếu tôi chạy tập lệnh trực tiếp trong trình chỉnh sửa tập lệnh, mọi thứ hoạt động tốt ...

Đây là mã của tôi:

function onEdit() { 
     var sheet = SpreadsheetApp.getActiveSheet(); 
     var sheetname = sheet.getName() 
     var AcCellRange = sheet.getActiveCell() 
     var AcCol = AcCellRange.getColumn() 
     var AcRow = AcCellRange.getRow() 

     if (sheetname=="Questions/Réponses") { 
     //Browser.msgBox(AcCol+'/'+AcRow) 
     //liste d'instructions 
     //Boucle si les colonne sont comprise dans le range 
     if ((AcCol==3) || ((AcCol==7))){ 
      //Browser.msgBox(AcCol) 
      if (AcRow > 7){ 
      //Browser.msgBox(AcRow) 
      sendEmails() 
      } 
     } 
     } 
     else 
     {} 
    }  
function sendEmails() { 
     Browser.msgBox('SendEmails') 
     var spreadsheet = SpreadsheetApp.getActive(); 
     var sheet = spreadsheet.getSheetByName('ListCourriel'); 
     Browser.msgBox('SendEmails2') 
     var sheetDonnee = spreadsheet.getSheetByName('Questions/Réponses'); 
     var RangeProjet = sheetDonnee.getRange(1, 3) 
     var NoProjet = RangeProjet.getValue() 
     var RangeProjet = sheetDonnee.getRange(4, 3) 
     var ProjName = RangeProjet.getValue() 
     Browser.msgBox('SendEmails3') 
     var startRow = 2; // First row of data to process 
     var LastRows = sheet.getRange(1,4) 
     var numRows = LastRows.getValue(); // Number of rows to process 
     // Fetch the range of cells A2:B3 
     var dataRange = sheet.getRange(startRow, 1, numRows, 2) 
     // Fetch values for each row in the Range. 
     var data = dataRange.getValues(); 
     Browser.msgBox('SendEmails4') 
     //Permet d'aller cherche les info de la ligne active 
     var ActiveCellRange = sheetDonnee.getActiveCell() 
     var ActiveRows = ActiveCellRange.getRow() 
     var NoLigne = sheetDonnee.getRange(ActiveRows,1) 
     var sDep = sheetDonnee.getRange(ActiveRows,2) 
     var sDate = sheetDonnee.getRange(ActiveRows,4) 
     var sInitiale = sheetDonnee.getRange(ActiveRows,5) 
     var sQuestion = sheetDonnee.getRange(ActiveRows,3) 
     Browser.msgBox('SendEmails5') 
     var rDate = sheetDonnee.getRange(ActiveRows,9) 
     var rInitiale = sheetDonnee.getRange(ActiveRows,10) 
     var rReponse = sheetDonnee.getRange(ActiveRows,7) 

     Browser.msgBox('SendEmails6') 
     var subject = 'Modif. Question/Réponse - Projet: ('+NoProjet+') '+ProjName; 
     var message = "No Ligne : "+NoLigne.getValue()+String.fromCharCode(10)+String.fromCharCode(10)+"Reponsable : "+sInitiale.getValue()+String.fromCharCode(10)+"Date : "+sDate.getValue()+String.fromCharCode(10)+"Question : "+String.fromCharCode(10)+sQuestion.getValue()+String.fromCharCode(10)+String.fromCharCode(10)+"************************************"+String.fromCharCode(10)+String.fromCharCode(10)+"Reponsable : "+rInitiale.getValue()+String.fromCharCode(10)+"Date : "+rDate.getValue()+String.fromCharCode(10)+"Réponse : "+String.fromCharCode(10)+rReponse.getValue() 
     //Browser.msgbox(subject) 

     Browser.msgBox('SendEmails7') 
     for (i in data) { 
     Browser.msgBox('SendEmails8') 
     var row = data[i]; 
     var emailAddress = row[0]; // First column 
     Browser.msgBox('SendEmails9') 
     MailApp.sendEmail(emailAddress, subject, message); 
     Browser.msgBox('Email sent') 
     } 
    } 
+0

Nếu bạn đang sử dụng 'Browser.msgBox()' cho mục đích gỡ lỗi, có một tùy chọn khác. Bạn có thể sử dụng 'Logger.log() ', chạy mã, sau đó XEM LOGS. –

+0

Bạn đã xem PHƯƠNG THỨC TIẾN HÀNH? Nó nói gì ở cuối? –

+0

Sử dụng trình gỡ lỗi và đặt điểm ngắt trên dòng 'MailApp.sendEmail()', sau đó chạy trình gỡ rối và khi mã tạm dừng, hãy xem các giá trị cho 'emailAddress, subject, message'. Họ là ai? [Tài liệu của Google - Điểm ngắt] (https://developers.google.com/apps-script/troubleshooting#using_the_debugger_and_breakpoints) –

Trả lời

6

Các điều khoản khác nhau khi chạy một SIMPLEonEdit() cò. Ngược lại, có một kích hoạt INSTALLABLE. Đây là tài liệu cho các hạn chế kích hoạt đơn giản:

Google Documentation - Triggers - Restrictions

Các trạng thái tài liệu:

Họ (kích hoạt một SIMPLE) không thể truy cập các dịch vụ đòi hỏi phải có giấy phép. Ví dụ, một kích hoạt đơn giản không thể gửi email vì dịch vụ Gmail yêu cầu uỷ quyền

Bạn cần phải thiết lập một cài đặt kích hoạt để có thể gửi email.

Trong menu EDIT, hãy chọn, DỰ ÁN HIỆN TẠI TRIGGERS.

Đặt tên cho chức năng của bạn khác với onEdit.

+0

Tôi có một probllem khác, tôi có một tên File 'MASTER', tôi đặt mã của tôi trong tập tin này, và mỗi lần chúng tôi bắt đầu một projet mới, ai đó lấy tập tin 'MASTER', đổi tên nó và sử dụng tập tin mới. Vấn đề của tôi là có vẻ như mỗi khi chúng ta sao chép tập tin 'MASTER' tôi cần phải làm lại tất cả các processe để thêm kích hoạt của tôi cho dự án ?? Có cách nào mà tôi chỉ phải làm điều đó trong tập tin MASTER ?? Cảm ơn bạn! –

Các vấn đề liên quan