#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(); , все сработало отлично!