Запуск запроса BigQuery при редактировании определенного столбца в Google таблицах

#javascript #google-apps-script #google-bigquery

# #javascript #google-apps-script #google-bigquery

Вопрос:

/ * Я новичок в написании сценариев приложений, и у меня очень конкретный вопрос. У меня есть лист со столбцом A. Всякий раз, когда этот лист изменяется на добавление / редактирование столбца A, мне нужно запустить запрос BigQuery и обновить результаты в другом столбце B. Я использовал функцию onedit(), но она не запускает запрос BigQuery. Я также пытался использовать устанавливаемый триггер, но по-прежнему безуспешно. Любые советы о том, как справиться с таким сценарием.

 Issue 1: Only top edited row is added to array " dat"
      2: The function runBigQuery is not triggered. */

Script:
function onMyEdit(e){
// Trying to find if the edited sheet is 'A' and column is 25. If so, I //want to get edited value(s) in the column 25 and add to an array

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = e.range;
  var colZ=range.getColumn() 1;
  var dat=[]
  if (sheet.getName() == 'A' amp;amp; range.getColumn() == 25 )
  {
    for(var i=0;i<range.getNumRows();i  )
    {
      var offset=range.getRow()   i;
      var g=sheet.getRange('Y'   offset).getValue();
      var val=sheet.getRange('Z'   offset).getValue();
      if (val== "Not found")
      {
        dat.push(g)  
      }
    }
    
  }

  dat = dat.filter(function(n){ return n != "" });  
  for (var i = 0; i < dat.length; i  ) 
  {
    dat[i] = '"'   dat[i]   '"';
  }
  var unique = [...new Set(dat)]
  
  //Initiate Query by calling function runBigQuery
  var values= runBigQuery(unique)
// Append the results to another sheet.
  appendData(sheetName,values)
   
}


Thanks,
 

Комментарии:

1. пожалуйста, предоставьте детали moe и фрагменты кода, если это возможно

2. Я добавил скрипт для справки. Надеюсь, это дает идею!

3. Что заставляет вас думать runBigQuery , что он не запускается? Вы проверили это с помощью некоторых базовых журналов? Достигает ли код строки var values= runBigQuery(unique) ? Кроме того, не могли бы вы предоставить код, связанный с runBigQuery ? Кроме того, вы уверены, что триггер установлен? Трудно понять, что происходит с предоставленной информацией. Наконец, поскольку вы используете getNumRows() , я предполагаю, что отредактированный диапазон содержит несколько строк?

4. Спасибо за ответ. Теперь проблема исправлена. Это потому, что я установил триггер из ресурса. Как только я добавил var ss = SpreadsheetApp.getActive(); ScriptApp.newTrigger(«onMyEdit»).forSpreadsheet(ss).onEdit() .create(); , все сработало отлично!