Как вернуть #N/A из скрипта Google Sheet?
Это кажется тривиальным вопросом. Но я провел несколько раз, я все еще не могу найти какие-либо подсказки из Интернета. Я пробовал обходные пути. Они все не хорошие. возврате null
или же undefined
просто приведет к пустой ячейке. Конечно, возврат "#N/A" (в виде строки) далек от добра.
Например, у нас есть функция в Google App Script.
function GIVE_ME_NA() {
return NA(); // This won't work
}
И в ячейках А1 и А2
A1 =GIVE_ME_NA()
A2 =ISNA(A1)
Желаемые результаты, показанные в A1 и A2:
A B
1 #N/A TRUE
В формуле листа мы можем просто использовать =NA()
, Но в App Script я не могу.
2 ответа
В настоящее время это невозможно, поскольку поддерживаемые возвращаемые значения для пользовательских функций - это строка, число, логическое значение и Дата.
Как вы уже заметили, возвращение NA()
не работает.
Пользовательская функция не может возвращать формулу, пользователь return '=NA()'
устанавливается в Google Таблицах как ТЕКСТ, пока пользователь вручную не изменит значение ячейки (или не переведет ячейку в режим редактирования, затем нажмите Enter.
Связанный
Справка
Что делать, если вы
return "=NA()"?
По тому, как вы используете это, мне неясно, зачем вам газовый раствор, потому что вы все равно используете его как функцию в камере.
Если вы делаете обычный скрипт, вы можете использовать что-то вроде этого
ss.getRange(1,1)setFormula('=NA()');
Я на самом деле заинтригован этим, потому что я обычно не выполняю встроенные функции (слишком медленное enmasse).
Вы должны назвать его с нужным вам диапазоном в кавычках (как строка), но это работает.
function getThing(aRange){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var data = sheet.getRange(aRange).getValues();
Logger.log(data);
var result = [];
for (var i=0; i<data.length;i++)
{
var row = [];
for (var j=0; j<data[0].length; j++)
{
if (data[i][j] == "")
{
row.push("=NA()");
continue;}
var value = data[i][j];
// DO OTHER LOGIC TO GET WHAT YOU WANT TO RETURN
row.push(value);
}//for loop
result.push(row);
}//for loop
return result;
}//*****************************************************************************