Я понимаю, что вы хотите дублировать лист ответов формы на другой лист (назовем его Zapier Sheet ) автоматически каждый раз, когда добавляется новый ответ формы. Вы можете достичь этой цели, разработав код Apps Script , который запускается при каждом ответе формы. В этом случае вы можете использовать код, похожий на этот:
function so62400514() {
var formSheet = SpreadsheetApp.openById(
'{FORM SHEET ID}').getSheets()[0];
var zapierSheet = SpreadsheetApp.openById(
'{ZAPIER SHEET ID}').getSheets()[0];
var formData = formSheet.getRange(1, 1, formSheet.getLastRow(), formSheet
.getLastColumn()).getValues();
var zapierData = zapierSheet.getRange(1, 1, zapierSheet.getLastRow(),
formSheet.getLastColumn()).getValues();
var recorded = false;
for (var fr = 0; fr < formData.length; fr++) {
for (var zr = 0; zr < zapierData.length; zr++) {
if (formData[fr].toLocaleString() == zapierData[zr].toLocaleString()) {
recorded = true;
}
}
if (recorded == false) {
zapierSheet.appendRow(formData[fr]);
} else {
recorded = false;
}
}
}
Этот код сначала откроет оба листа (используя SpreadsheetApp.openById()
и Spreadsheet.getSheets()
), чтобы выбрать данные с помощью Sheet.getRange
(установить границы с помощью Sheet.getLastRow()
и Sheet.getLastColumn()
) и прочитать их с помощью Range.getValues()
. После этой операции данные будут повторяться с использованием свойства Array.length
в качестве периметра. Итерация сравнивает каждую строку из формы Sheet с каждой строкой zapier листа (для выполнения sh этого я сначала проанализировал строку как строку с Date.toLocaleString()
). Если строка формы найдена на листе zapier, логическое значение recorded
будет помечено как true. После того, как каждая строка на листе zapier сравнивается со строкой формы, код запишет ее на лист zapier на основе логического флага.
Как объяснялось в предыдущем абзаце, этот код примет лист формы строки, отсутствующие в листе zapier; и наклеить их на лист zapier. Я использовал этот подход, чтобы не пропустить ни одной строки (поскольку это могло произойти, когда одновременные пользователи ответили на форму сразу все). Чтобы сделать это срабатывание автоматически, вам необходимо настроить триггер со следующими настройками:
Например, предположим, что у нас есть эти ответы на формы:
И наш первоначальный образец zapier-листа выглядит так, как показано ниже. Пожалуйста, обратите внимание, как отсутствуют несколько прошлых строк;
После запуска скрипта (как он будет делать автоматически) это будет результат:
Я предлагаю запустить сценарий вручную для начальной настройки. Если отметки времени расходятся, проверьте, совпадают ли часовые пояса в обеих таблицах. Не стесняйтесь задавать мне дополнительные вопросы, чтобы уточнить мой ответ.