2013-12-16 5 views
1

Я ранее использовал этот скрипт google ниже для перемещения информации с одного листа на другой лист на основе условных значений в одном столбце (столбец № 12). Тем не менее, он просто прекратил отвечать/работает в последнее время, и я не могу понять, почему. Я играл с триггерами, я попытался использовать его в новом скрипте и изменил некоторые имена и столбец #, но ничего не работает. Любые предложения о том, где я могу посмотреть, что происходит?Мои скрипты google больше не выполняются

function onEdit(e) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getActiveSheet(); 
    var r = ss.getActiveRange(); 
    if(s.getName() == "Phx-DFF" && r.getColumn() == 12 && r.getValue() == "no") 
    { 
     var row = r.getRow(); 
     var numColumns = s.getLastColumn(); 
     var targetSheet = ss.getSheetByName("NY-DFF"); 
     if(targetSheet.getLastRow() == targetSheet.getMaxRows()) 
     { 
      targetSheet.insertRowsAfter(targetSheet.getLastRow(), 5); //inserts 20 rows after last used row 
     } 
     var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
     s.getRange(row, 1, 14, numColumns).moveTo(target); 
     s.deleteRow(row); 
    } 
} 
+0

Не могли бы вы быть более конкретным в целях сценария? Вы получаете сообщение об ошибке? Вы можете попробовать и добавить некоторые отладочные инструкции, как описано [здесь] (https://developers.google.com/apps-script/troubleshooting#debugging) –

+0

Цель сценария заключается в том, что при редактировании столбца 12 сценария и это изменение добавляет «нет», затем эта строка будет перемещена на другой лист в электронной таблице. Означает ли это цель? – user3109145

+0

И я не получаю сообщение об ошибке при отладке, ничего не происходит, когда я нажимаю кнопку отладки. – user3109145

ответ

0

Вы пытались использовать регистрацию или запуск функции в режиме отладки, чтобы увидеть, что exacly происходит при выполнении этой функции.

Я хочу предложить follwing изменения в функции, как много информации обеспечивается EventInfo JSON:

function onEdit(e) { 
var ss = e.source; 
var r = e.Range; 

if(ss.getSheetName() == "Phx-DFF" && r.getColumn() == 12 && e.value == "no") 
{ 
    var s = ss.getActiveSheet(); 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("NY-DFF"); 
    if(targetSheet.getLastRow() == targetSheet.getMaxRows()) 
    { 
     targetSheet.insertRowsAfter(targetSheet.getLastRow(), 5); //inserts 20 rows after last used row 
    }//I dont think this is necessary, GAS should takes care of this auto. Remove this part 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 14, numColumns).moveTo(target); 
    s.deleteRow(row); 
} 
} 
+0

, когда я нажимаю debug, он идет ... «Подготовка к исполнению onedit» .... а затем «функция отладки onedit», а затем ничего не происходит. – user3109145

+0

Вам нужно указать точку останова, то есть точку, где сценарий прекращает выполнение, и вы можете проверить значения в переменных в этой точке выполнения (сделайте это, щелкнув слева от номера строки, и появится желтая точка). Создайте точку останова в первой строке цикла if и запустите режим отладки, если сценарий не остановится, цикл не вводится. –

+0

Спасибо! Я смог понять это! – user3109145

Смежные вопросы