Как написать в Google Sheets с помощью webhook в Google App Script - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь добавить счетчик, используя App Scripts -> Google Sheets, чтобы при каждом получении веб-крючка значение увеличивалось на 1 в определенной ячейке.

Все работает, когда я тестирую его с помощью фиктивной функции в редакторе Google Appscript, но не работает, когда я отправляю реальный веб-крючок с помощью метода doPost (e).

Я потратил около 2 недель на изучение чтения / записи Javascript, устранения неполадок с видео на YouTube и чтения API Google Sheets, и я ооочень близок к взлому кода ... но я застрял на этом Последняя часть. Это, наверное, что-то простое, что мне не хватает.

Не могли бы вы помочь, пожалуйста? Заплатит 3 миллиона долларов

//ACCEPT WEBHOOK FROM ACTIVECAMPAIGN

function doPost(e) {
  return updateMetrics(e)
}

function updateMetrics(e){
var selectedMetric = e.parameter.metric;

//GET TODAY'S DATE

var today = new Date();
var dd = String(today.getDate());
var mm = String(today.getMonth() + 1); //January is 0!
var yyyy = today.getFullYear();

today = mm + '/' + dd + '/' + yyyy;
var monthMetrics = mm + '/' + yyyy;  

var spreadsheetId = '1UfRFM7Uz0YUqemPTVYe1lmZ5NC5v9naFvmlLvXPZuVM';  
var rangeName = monthMetrics + '!A2:I35';

var stringSheet = JSON.stringify(monthMetrics);
var stringToday = JSON.stringify(today)

var metricsSheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(monthMetrics)

// GET METRICS COLUMN NUMBER

function getColumnNrByName(sheet, metric) {
  var range = sheet.getRange(1, 1, 1, sheet.getMaxColumns());
  var values = range.getValues();

  for (var row in values) {
    for (var col in values[row]) {
      if (values[row][col] == metric) {
        return parseInt(col);
      }
    }
  }

  throw 'failed to get column by name';
}

var metricColumn = getColumnNrByName(metricsSheet, selectedMetric)

// GET PREVIOUS METRICS AMOUNT

function getPreviousAmount(sheet, column, metric, date, metriccolumn){

  var lastRow=sheet.getLastRow();
  var data=sheet.getRange(1,column,lastRow,column+metric).getValues();


  for(i=0; i <data.length; ++i){
    if (data[i][0]==date){
      return data[i][metric];

    }
  }
}


var previousAmount = getPreviousAmount(metricsSheet, 1, metricColumn, today, metricColumn)

// SET NEW METRIC

function setNewMetric(sheet, column, metric, date, amount){

  var lastRow=sheet.getLastRow();
  var data=sheet.getRange(1,column,lastRow,column+metric).getValues();


  for(i=0;i<data.length;++i){
    if (data[i][0]==date){
      return sheet.getRange(i+1, column+metric).setValue(amount+1);

    }
  }
}

  var metricScript = setNewMetric(metricsSheet, 1, metricColumn, today, previousAmount);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...