преобразование импорта JSON для работы с формулой массива в листах Google - PullRequest
0 голосов
/ 25 января 2019

Я использую функцию IMPORTJSON для просмотра статуса доставки на моем листе Google. Однако он не предназначен для работы с Arrayformula, поэтому я должен применить его к каждой ячейке - большая проблема с записями формы.

function IMPORTJSON(url,xpath){
  
  try{
    // /rates/EUR
    var res = UrlFetchApp.fetch(url);
    var content = res.getContentText();
    var json = JSON.parse(content);
    
    var patharray = xpath.split("/");
    //Logger.log(patharray);
    
    for(var i=0;i<patharray.length;i++){
      json = json[patharray[i]];
    }
    
    //Logger.log(typeof(json));
    
    if(typeof(json) === "undefined"){
      return "Node Not Available";
    } else if(typeof(json) === "object"){
      var tempArr = [];
      
      for(var obj in json){
        tempArr.push([obj,json[obj]]);
      }
      return tempArr;
    } else if(typeof(json) !== "object") {
      return json;
    }
  }
  catch(err){
      return "";  
  }
  
}

1 Ответ

0 голосов
/ 25 января 2019

Ваш вопрос не очень понятен, но я думаю, что вы спрашиваете, как применить пользовательскую формулу к каждой новой отправке формы, поскольку вы не можете использовать формулу массива для копирования формулы вниз.

Если этоВ этом случае вы можете использовать установленный триггер onFormSubmit и применять формулу с использованием нотации R [1] C [1] к каждой новой отправке.

function onFormSubmit(e){  
 var sheet = e.source.getActiveSheet();
 var row = e.range.getRow();
 var range = sheet.getRange(row,--column number--);
     range.setFormula('=IMPORTJSON(INDIRECT("R[0]C[-- Column offset of URL--]",0),INDIRECT("R[0]C[--Column offset of xpath--]",0))');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...