Я пытаюсь получить Google, чтобы отправить мне отправленную информацию из формы. Я могу заставить его работать с листом по умолчанию (Form Responses). Но я использую отдельный лист под названием «ConversionTracker», который фактически использует функцию запроса для импорта данных из листа по умолчанию во второй лист, поэтому я могу использовать формулы внутри ответы. В основном, я хочу, чтобы сценарий электронной почты ссылался на второй лист, а не на первый лист, когда он отправил электронное письмо последнего сообщения. Каждый раз, когда я использую скрипт, я отправляю данные с первого листа (ответы формы), а не на лист названный «Tracker Tracker». Я пробовал разные варианты скрипта, но я не могу его получить. См. Скрипт ниже.Google Form Script - Представление электронной почты
function Initialize() {
try {
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers)
ScriptApp.deleteTrigger(triggers[i]);
ScriptApp.newTrigger("EmailGoogleFormData")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit().create();
} catch (error) {
throw new Error("Please add this code in the Google Spreadsheet");
}
}
function EmailGoogleFormData(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 = "dustin.****@b****.com";
// Enter your subject for Google Form email notifications
var subject = "Google Form Submitted";
var key, entry,
message = "",
ss = SpreadsheetApp.getActiveSheet(),
sheet = ss.getSheets()["ConversionTracker"],
ss.setActiveSheet(sheet),
cols = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues()[0];
// 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";
}
MailApp.sendEmail(email, subject, message);
}
} catch (error) {
Logger.log(error.toString());
}
}
Сценарий, который работает и передает данные с первого листа:
function Initialize() { try {
var triggers = ScriptApp.getProjectTriggers(); for (var i in triggers) ScriptApp.deleteTrigger(triggers[i]); ScriptApp.newTrigger("EmailGoogleFormData") .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) .onFormSubmit().create(); } catch (error) { throw new Error("Please add this code in the Google Spreadsheet"); } } function EmailGoogleFormData(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 = "dustin****@b****.com"; // Enter your subject for Google Form email notifications var subject = "Google Form Submitted"; var key, entry, message = "", ss = SpreadsheetApp.getActiveSheet(), cols = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues()[0]; // 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"; } MailApp.sendEmail(email, subject, message); } } catch (error) { Logger.log(error.toString()); } }
Привет, я получаю сообщение в журнале "[15-10-27 12: 09: 01: 639 EDT] TypeError: Не удается найти функцию getSheetByName в объекте Sheet «. когда я пытаюсь изменить это. смотри ниже код я изменил .. ключ вар, вход, сообщение = "", сс = SpreadsheetApp.getActiveSheet(), лист = ss.getSheetByName ("ConversionTracker"); ss.setActiveSheet (лист); var cols = ss.getRange (1, 1, 1, ss.getLastColumn()). GetValues () [0]; –
Вы используете переменную с именем 'ss', которая обычно используется для * электронной таблицы *. Но вы назначаете активный лист переменной 'ss'. Используйте 'ss = SpreadsheetApp.getActiveSpreadsheet();' –
Привет, sandy, я получаю сообщение об ошибке вместе с этим »[15-10-27 10: 10: 10: 559 PDT] InternalError: Не удается найти метод setActiveSheet ((класс))." Мой скрипт: var key, entry, message = "", ss = SpreadsheetApp.getActiveSpreadsheet(), sheet = ss.getSheets() ["ConversionTracker"]; ss.setActiveSheet (лист); var cols = ss.getRange (1, 1, 1, ss.getLastColumn()). GetValues () [0]; –