Как вернуть # N / A из скрипта Google Sheet? - PullRequest
2 голосов
/ 08 мая 2019

Это кажется тривиальным вопросом.Но я провел несколько раз, я все еще не могу найти какие-либо подсказки из Интернета.Я пробовал обходные пути.Они все не хорошие.Возвращение null или undefined приведет только к пустой ячейке.Конечно, возврат «# N / A» (в виде строки) очень далек от хорошего.

Например, у нас есть функция в Google App Script.

function GIVE_ME_NA() {
    return NA();     // This won't work
}

И вячейки A1 и A2

A1 =GIVE_ME_NA()
A2 =ISNA(A1)

Желаемые результаты, показанные в A1 и A2:

    A       B
1  #N/A   TRUE

В формуле листа мы можем просто использовать =NA().Но в App Script я не могу.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Что если вы

return "=NA()"?

Мне непонятно, как вы используете это, почему вы хотите газовый раствор, потому что вы все равно используете его как функцию в камере.

Если вы делаете обычный скрипт, вы можете использовать что-то вроде этого

ss.getRange(1,1)setFormula('=NA()');
0 голосов
/ 09 мая 2019

Я на самом деле заинтригован этим, потому что я обычно не выполняю встроенные функции (слишком медленное 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;

}//*****************************************************************************
...