#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-sheets
Вопрос:
У меня есть данные в «Форме ответов 1». Я хочу переместить данные с листа «Ответы формы 1» на лист «Проверенный ответ формы». Условие состоит в том, что должны перемещаться записи, помеченные как True в столбце W, а не все записи.
Ссылка на лист:
https://docs.google.com/spreadsheets/d/1LUUEZ7sSjBy-WWL3TZt8l6sqtrEBn3dZ03iRDTY1bF0/edit?usp=sharing
Код, который я использую, это:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("Form responses 1");
var pasteSheet = ss.getSheetByName("Sheet5SS");
var pasteSheet_size=pasteSheet.getRange('A2:A').getValues().filter(String).length;
var source_size=copySheet.getRange('A2:A').getValues().filter(String).length;
var source_range = copySheet.getRange(1,1,source_size,copySheet.getLastColumn());
var move_data = source_range.getValues().filter(row=>row[23]==true);
var source_data = source_range.getValues().filter(row=>row[23]==false);
pasteSheet.getRange(pasteSheet_size 1,1,move_data.length,move_data[0].length).setValues(move_data);
source_range.clearContent();
copySheet.getRange(1,1,source_data.length,source_data[0].length).setValues(source_data);
}
Комментарии:
1. Привет, не могли бы вы сообщить мне, решил ли мой ответ вашу проблему, чтобы я мог изменить его, если это не так? Спасибо
Ответ №1:
Объяснение:
Вы очень близки.
-
Вам нужно начать диапазон со второй строки:
copySheet.getRange(2,1,source_size,copySheet.getLastColumn());
-
и флажки находятся в столбце W, следовательно, в столбце номер 22:
filter(row=>row[22]==true);
Решение:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("Form responses 1");
var pasteSheet = ss.getSheetByName("Verified Form Responses");
var pasteSheet_size=pasteSheet.getRange('A2:A').getValues().filter(String).length;
var source_size=copySheet.getRange('A2:A').getValues().filter(String).length;
var source_range = copySheet.getRange(2,1,source_size,copySheet.getLastColumn());
var move_data = source_range.getValues().filter(row=>row[22]==true);
var source_data = source_range.getValues().filter(row=>row[22]==false);
pasteSheet.getRange(pasteSheet_size 1,1,move_data.length,move_data[0].length).setValues(move_data);
source_range.clearContent();
copySheet.getRange(2,1,source_data.length,source_data[0].length).setValues(source_data);
}
Комментарии:
1. docs.google.com/spreadsheets/d/… Этот скрипт не удаляет строку из листа ответов формы. Когда пользователь отправляет данные с помощью формы Google, они появляются после записей, которые были перемещены, а также этот скрипт не работает нормально. Осталось две записи, которые не перемещаются, и этот скрипт показывает ошибку.
2. Также этот лист доступен пользователю. Когда он нажимает на кнопку отправки, этот скрипт не запускается.
3. А также при копировании данных иногда он копирует данные в проверенной форме, где данные уже существуют
4. @Admin-RKPareekCo Привет. Когда я создавал этот код, я не знал, что используемый вами исходный лист — это лист ответов формы. Последний не работает как обычный лист. Когда пользователь отправляет форму, данные не обязательно добавляются в последнюю строку, но в строку после последней отправки. Было сделано. Это означает, что нам нужно удалять строку каждый раз, когда мы перемещаем данные. Но это не входило в рамки этого вопроса. Не могли бы вы опубликовать новый вопрос по этой проблеме? А именно, как переместить записи ответа формы на другой лист или что-то в этом роде. Спасибо 🙂
5. Я опубликовал новый вопрос