Проблема с конфликтом скриптов Google с функцией QUERY - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть лист с ответами.Затем я использую функцию QUERY, чтобы вытащить все данные на отдельный лист для действия по следующей формуле:

=QUERY(formsubmissions,"SELECT *")

, где formsubmissions в именованном диапазоне.

После четырех шагов пользователь выбирает Completed = Ýes ', который запускает следующий скрипт:

function onEdit() {


 var sheetNameToWatch = "R+R;

 var columnNumberToWatch = 15;

 var valueToWatch = "Yes";

 var sheetNameToMoveTheRowTo = "Completed";



 var ss = SpreadsheetApp.getActiveSpreadsheet();

 var sheet = SpreadsheetApp.getActiveSheet();

 var range = sheet.getActiveCell();



 if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {

   var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);

   var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

   sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);

   sheet.deleteRow(range.getRow());

 }

}

Этот скрипт выполняется и работает правильно, перемещая строку в Çompletedлист и удаление с активного листа.Однако строка удаляется только на мгновение и появляется почти мгновенно.Я предполагаю, что это потому, что он все еще соответствует параметрам QUERY, поэтому он сразу же возвращается.

Как я могу гарантировать, что он останется удаленным, либо изменив запрос, либо изменив скрипт?

1 Ответ

0 голосов
/ 15 февраля 2019

Как вы и предполагали, это происходит потому, что строка в исходном листе ответов по-прежнему удовлетворяет критериям запроса.Вы можете изменить свой запрос, чтобы исключить любые уникальные идентификаторы, проверив, что он еще не отображается в заполненном листе. Скажем, что столбец A является ссылочным номером или отметкой времени, вы можете попробовать следующее:

=QUERY(formsubmissions,"SELECT * where A <> "&Completed!A:A)

Затем он проверяет массив в Completed A: A на то же значение и исключает его из результата запроса, если он присутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...