Как остановить дублирование отправки форм в основной базе данных Google Sheet/APPSCRIPT и придатке данныхJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как остановить дублирование отправки форм в основной базе данных Google Sheet/APPSCRIPT и придатке данных

Сообщение Anonymous »

На моем веб-сайте есть несколько форм Google, которые заполняют клиенты. Все ответы на эти разные формы связаны с одной электронной таблицей. Затем я использовал APPSCRIPT, чтобы объединить все ответы на одной вкладке под названием «MasterSheet».
Моя проблема заключается в следующем. Я использую временные метки в качестве своего уникального идентификатора, чтобы сценарий знал, когда есть новая отправка, и ТОЛЬКО добавлял новую отправку с каждой отдельной вкладки в мою главную таблицу. НО если одновременно поступило 2 заявки, сценарий подхватил только одну. Поэтому я скорректировал его, пытаясь собрать все новые материалы, но теперь скрипт дублирует данные при появлении нового представления.
Я думаю, проблема в моем
константные данные
ЗДЕСЬ ПОЛНЫЙ СКРИПТ:
const data = activeSheet.getRange(2, 1, lastRow - 1, activeSheet.getLastColumn()).getValues();
const newData = data.filter(row => !masterTimestampsAndEmails.has(row[0] + row[1])); // Check Timestamp + Email combo

if (newData.length > 0) {
// Add the tab name to the "GUIDE REQUESTED" column
const headers = masterSheet.getRange(1, 1, 1, masterSheet.getLastColumn()).getValues()[0];
const guideRequestedIndex = headers.indexOf('GUIDE REQUESTED (DO NOT CHANGE)');
if (guideRequestedIndex === -1) {
throw new Error('GUIDE REQUESTED column not found in the MasterSheet.');
}

newData.forEach(row => {
row[guideRequestedIndex] = activeSheetName; // Set the GUIDE REQUESTED column to the sheet name
});

// Append only new rows to the MasterSheet
masterSheet.getRange(masterSheet.getLastRow() + 1, 1, newData.length, newData[0].length).setValues(newData);
Logger.log(`Appended ${newData.length} rows from sheet "${activeSheetName}" to MasterSheet.`);
} else {
Logger.log(`No new data to append from sheet "${activeSheetName}".`);
}

Это был мой оригинальный сценарий, который работал КРАСИВО, но, к сожалению, при отправке двух форм
const data = activeSheet.getRange(lastRow, 1, 1, activeSheet.getLastColumn()).getValues();
const newData = data.filter(row => !masterTimestamps.has(row[0].toString().trim()));

if (newData.length > 0) {
newData.forEach(row => {
// Update state/province based on country
const country = row[5]; // Country column
const stateIndex = 6; // "U.S. State / Canada Province" column
if (country !== 'US - United States of America (the)' && country !== 'CA - Canada') {
row[stateIndex] = 'Not applicable (located outside of the United States and Canada)';
}

// Set the GUIDE REQUESTED column to the active sheet name
const guideRequestedIndex = 14; // Adjust if the column position changes
row[guideRequestedIndex] = activeSheetName;
});

masterSheet.getRange(masterSheet.getLastRow() + 1, 1, newData.length, newData[0].length).setValues(newData);
Logger.log(`Appended 1 row from sheet "${activeSheetName}" to MasterSheet.`);
} else {
Logger.log(`No new data to append from sheet "${activeSheetName}".`);
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... sheet-apps
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»