Я пишу программу в Google Spreadsheet API для Google App Script, которая ссылается на ячейки отображаемых значений на листе для формулирования функций QUERY(), а затем возвращает результат этой сформулированной функции QUERY() в разные ячейки.
Поскольку при формулировании этих функций запроса используется много изменяющихся переменных (я ссылаюсь на ячейку, отвечающую за исходный лист, за столбец, который нужно искать, и за точку данных, которую необходимо вернуть), сформулированные функции запросов часто имеют # Ошибки REF или #N/A. Хотя этого легко избежать для меня, программа предназначена для клиента, и поэтому я должен иметь более информированные сообщения об ошибках, чтобы кто-то мог легко понять проблему.
В данном случае здесь я ссылаюсь на лист «Коммунальные предприятия» для столбца «Название коммунального предприятия», а затем возвращаю соответствующее значение «Адрес». поскольку «Ошибка» не отображается в столбце «Имя коммунального предприятия» на листе «Коммунальные предприятия», при попытке вернуть соответствующий адрес возникает ошибка #Н/Д.
Я попробовал оператор try-catch, но он, похоже, не распознал ошибку:
try{
//This is assigning the assembled QUERY() formula to a cell
//(works successfully & reliably)
retrieveRange.getRange().getCell(k+1, 1).setFormula(formulaArray[k]);
} catch (e){
//Never catches an error, and therefor never logs the following-
Logger.log("Error Recognized:" + e);
}
Как мне поймать эти ошибки? И, кроме того, как я могу сообщить о специальном сообщении об этих ошибках?
Большое спасибо!

if. Сначала запустите запрос во вспомогательном столбце, затем скопируйте и вставьте значение каждой ячейки в этом столбце в нужный столбец с помощью цикла. Если значение ячейки равно #ССЫЛКА!, напишите пользовательскую ошибку для #ССЫЛКА! в место назначения, если значение ячейки #N/A, напишите пользовательскую ошибку для #N/A в место назначения... Некоторый рабочий код:var error = ss.getRange("E9").getValue() if(error == "#REF!") { ss.getRange("E10").setValue("REF") } else if (error == "#N/A") { ss.getRange("E10").setValue("N/A") }- person HaPhan   schedule 13.09.2018catchникогда не работает, заключается в том, что вашаsetFormulaфункция всегда успешна. Ошибка, которую вы получили в ячейке, вызвана не вашим кодом, а функцией Google Spreadsheet. Я не думаю, что есть какой-либо способ возиться с этими всплывающими окнами, поскольку они встроены, и в настоящее время действительно нет функции/скрипта, которые позволяют их изменять, хотя есть функция под названиемERROR.TYPE, которая является версией функции листа того, что я написал в тестовом листе, которым я поделился с вами. - person HaPhan   schedule 14.09.2018