Ich habe versucht, ein Google Apps-Skript zu verwenden, das an ein Google-Formular angehängt ist, um ein einmaliges Passwort zu generieren. Feld leer. Die Schaltfläche Senden löst die OTP -Generation aus und wird an die E -Mail -ID gesendet. Dann bearbeitet der Befragte die Antwort und die Schlüssel im OTP und reicht dann ein. Die letztere Einreichung löst die Überprüfung von OTP aus und zeigt die Erfolgs-/Fehlermeldung an. > Form Responder Link < /p>
Skript: < /p>
function onSubmit(e) {
Logger.log("onSubmit triggered");
var itemResponses = e.response.getItemResponses();
var emailItem = itemResponses.find(item =>
item.getItem().getTitle() == "Your Email Address"); // Replace with your email question title
if (!emailItem) {
Logger.log("ERROR: Email question NOT found!");
itemResponses.forEach(itemResponse => Logger.log("Item Title: " + itemResponse.getItem().getTitle()));
return;
}
var email = emailItem.getResponse();
Logger.log("Email: " + email);
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
Logger.log("ERROR: Invalid email address: " + email);
e.response.withItemResponses().setConfirmationMessage("Invalid email address. Please enter a valid email.");
return;
}
// Get the edit URL
var editUrl = e.response.getEditResponseUrl();
Logger.log("Edit URL: " + editUrl);
var cache = CacheService.getScriptCache();
cache.put("pending_email", email, 300); // Store email for 5 minutes
cache.put("edit_url", editUrl, 300); // Store edit URL
// Generate and send OTP
var otp = generateOTP();
cache.put(email + "_otp", otp, 300); // Store OTP for 5 minutes
sendEmail(email, otp, editUrl); // Send email with OTP and edit URL
// Instead of setEditResponse, use a confirmation message to prompt for OTP entry
e.response.withItemResponses().setConfirmationMessage("Thank you
for submitting your email. Please check your inbox (and spam
folder) for the OTP. Click the link in the email to complete your
submission.");
return;
}
function onFormSubmit(e) {
Logger.log("onFormSubmit triggered");
var itemResponses = e.response.getItemResponses();
var emailItem = itemResponses.find(item => item.getItem().getTitle() == "Your Email Address"); // Replace with your email question title
var email = emailItem.getResponse();
var otpQuestion = itemResponses.find(item => item.getItem().getTitle() == "OTP"); // Replace with your OTP question title
var submittedOtp = otpQuestion ? otpQuestion.getResponse() : null;
var cache = CacheService.getScriptCache();
var cachedOtp = cache.get(email + "_otp");
if (submittedOtp && cachedOtp && submittedOtp == cachedOtp) {
cache.put(email + "_verified", true, 3600);
e.response.withItemResponses().setConfirmationMessage("Your
email has been verified. Thank you for your submission!");
} else if (submittedOtp) {
e.response.withItemResponses().setConfirmationMessage("Incorrect OTP. Please try again.");
} else {
e.response.withItemResponses().setConfirmationMessage("Please enter the OTP.");
}
}
function generateOTP() {
var otp = Math.floor(100000 + Math.random() * 900000); // 6-digit OTP
return otp.toString();
}
function sendEmail(email, otp, editUrl) { // Add editUrl parameter
var subject = "Your OTP for Google Form Verification";
var body = "Your OTP is: " + otp + "\n\nPlease click the
following link to complete your submission: " + editUrl; // Include editUrl
try {
MailApp.sendEmail(email, subject, body);
Logger.log("OTP email sent successfully to: " + email);
} catch (error) {
Logger.log("ERROR sending OTP email: " + error);
}
}
< /code>
Fehler beobachtet: < /p>
Head onSubmit Trigger Feb 24, 2025, 3:22:24 PM 1.062 s Failed
Cloud logs
Feb 24, 2025, 3:22:24 PM Info onSubmit triggered
Feb 24, 2025, 3:22:24 PM Info Email: [email protected]
Feb 24, 2025, 3:22:25 PM Info Edit URL: https://docs.google.com/forms/d/e/1FAIp ... QauOy8iPHw
Feb 24, 2025, 3:22:25 PM Info OTP email sent successfully to: [email protected]
Feb 24, 2025, 3:22:25 PM Error TypeError: e.response.withItemResponses is not a function
at onSubmit(Code:39:14)
Head onFormSubmit Trigger Feb 24, 2025, 3:22:22 PM 1.267 s Failed
Cloud logs
Feb 24, 2025, 3:22:22 PM Info onFormSubmit triggered
Feb 24, 2025, 3:22:23 PM Error TypeError: e.response.withItemResponses is not a function
at onFormSubmit(Code:62:16)
< /code>
TypeError: E. response.withitemresponses ist keine Funktion
bei OnFormSubmit (Code: 62: 16) < /p>
< /blockquote>
Trigger Ich habe hinzugefügt: < /p>
Google Apps Skript für OTP -Generation [geschlossen] ⇐ JavaScript
-
- Similar Topics
- Replies
- Views
- Last post
-
-
So authentifizieren Sie ein Skript zur Verwendung mit Google Apps Script
by Anonymous » » in JavaScript - 0 Replies
- 1 Views
-
Last post by Anonymous
-