В настоящее время я использую формы Google, чтобы пользователи могли отправлять изменения сайта. Все это прекрасно работает.Сценарий Google Таблиц: автоматически удалять строку на другой лист
Я добавил дополнительную колонку с статусом билета. Теперь я написал скрипт, который проверяет, когда он обновлен до «Готово», а затем переместит эту строку в другой лист, озаглавленный «Сделано».
Однако это работает только в том случае, если я обновляю строку, которую я добавил вручную. Если я изменил столбец строки, созданной из записи формы, это не сработает. Кто-нибудь видел эту проблему раньше. Код ниже.
function onEdit(e){
/*
When a user updates a status to done the ticket gets moved to another sheet
*/
var sheetNameToWatch = "Form responses 1"; // The sheet to watch for changes
var columnNumberToWatch = 1; // The column where the change happens on the above sheet
var valueToWatch = "Done"; // What is the text you are looking for
var sheetNameToMoveTheRowTo = "Done"; // The Sheet name for where the row gets moved to.
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Get the active spreadsheet
var sheet = SpreadsheetApp.getActiveSheet(); // Get the active sheet
var range = sheet.getActiveCell(); // Get the current cell that has just been updated
// Check that you are on the correct sheet and column.
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); // get a reference for the target sheet
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); // get a reference for the target row
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange); // copy the row from current sheet to the new sheet
sheet.deleteRow(range.getRow()); // Delete the row from the old sheet
}
}
Если вы выделили 4 пробела или выделите свой код, а затем нажмите символ {} на панели редактирования, ваш код будет смещен с гораздо более удобным для чтения форматом. – zbnrg