0

J'essaye d'écrire un script qui enverra des emails spécifiques selon que quelqu'un soumet une nouvelle réponse ou édite sa réponse existante. J'ai besoin de la ligne d'objet pour lire "Prénom Nom: Modifier" ou "Prénom Nom: Réponse" en fonction de ce qui a été soumis. Si quelqu'un modifie sa réponse, seules les valeurs qui ont été modifiées apparaissent dans l'e-mail; Toutefois, s'ils ne changent pas de nom, ils n'apparaissent pas dans la ligne d'objet. Des idées sur la façon de changer cela afin qu'il montre leur nom chaque fois qu'il y a une modification ou une réponse? Merci d'avance!Notification par e-mail Google Forms lors de la mise à jour

function Initialize() { 

try { 

var triggers = ScriptApp.getProjectTriggers(); 

for (var i in triggers) 
    ScriptApp.deleteTrigger(triggers[i]); 

ScriptApp.newTrigger("formSubmitted") 
    .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) 
    .onFormSubmit().create(); 

} catch (error) { 
throw new Error("Please add this code in the Google Spreadsheet"); 
} 
} 
function formSubmitted(e) { 

if (!e) { 
throw new Error("Please go the Run menu and choose Initialize"); 
} 

try { 

if (MailApp.getRemainingDailyQuota() > 0) { 

    // You may replace this with another email address 
    var email = "my email"; 

    // Enter your subject for Google Form email notifications 

    var key, entry, 
    ss = SpreadsheetApp.getActiveSheet(), 
    cols = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues()[0], 
    message = "", 
    first = e.values[1], 
    last = e.values[2]; 
    var editSubject = first + " " + last +": Edit";  
    var submitSubject = first + " " + last + ": Submitted"; 

    // Iterate through the Form Fields 
    for (var keys in cols) { 

     key = cols[keys]; 
    entry = e.namedValues[key] ? e.namedValues[key].toString() : ""; 
     // Only include form fields that are not blank 
    if ((entry !== "") && (entry.replace(/,/g, "") !== "")) 
     message += key + ' :: ' + entry + "\n\n"; 


    } 

    } 

if (e.range.getNotes()[0].join('')) { 
MailApp.sendEmail(email, editSubject, message); 
} 
else { 
MailApp.sendEmail(email, submitSubject, message); 
} 
} 



catch (error) { 
Logger.log(error.toString()); 
} 
} 

Répondre

0

Vous pouvez vérifier ce documentation qui utilise triggers pour envoyer un e-mail lorsqu'un utilisateur répond à la forme.

demande de l'échantillon:

/** 
* Adjust the onFormSubmit trigger based on user's requests. 
*/ 
function adjustFormSubmitTrigger() { 
    var form = FormApp.getActiveForm(); 
    var triggers = ScriptApp.getUserTriggers(form); 
    var settings = PropertiesService.getDocumentProperties(); 
    var triggerNeeded = 
     settings.getProperty('creatorNotify') == 'true' || 
     settings.getProperty('respondentNotify') == 'true';