如何将 Hubspot 发送到电子表格的数据更新? (谷歌表格)

问题描述 投票:0回答:1

我正在使用 hubspot CRM 每天将数据发送到我的电子表格: 在 A 列中,它填充了 GCLID B 列什么也没有填充 如果是 UNIX 日期值,则在 C 列中填充 在 D 列中什么也没有填充 E 列什么也没有填充。

所以我构建了一个 Appscript 来编辑这些字段,例如: A 列什么也没发生 B 列中填充了文本 在 C 列中,它将 unix 日期值转换为带有 epochtodate 的常规日期格式 在 D 列中,它填充了一个数值 在 E 列中,它填充了文本

我不能说更多,因为这是一些私人数据。

应用程序脚本工作得很好,当我编辑某些内容时,就像我在下面的行中添加数据一样,它会完美地编辑和填充。 但是当 hubspot 通过 API 执行时,什么也没有发生。

我想让这个应用程序脚本在 hubspot 也将数据发送到电子表格时起作用。

这是我正在使用的脚本。

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var startRow = range.getRow();
  var endRow = startRow + range.getNumRows() - 1;


  for (var row = startRow; row <= endRow; row++) {
    // Coluna B
    sheet.getRange(row, 2).setValue('Definitivo - GADS - Conversões Offline - Match all');


    // Coluna C (Converter valor Unix para data usando a fórmula EPOCHTODATE)
    var cell = sheet.getRange(row, 3);
    var cellValue = cell.getValue();
    if (!isNaN(cellValue) && cell.getFormula() === '') {
      // Adicionar a fórmula temporariamente
      cell.setFormula('=EPOCHTODATE(' + cellValue + ', 2)');
     
      // Aguardar um momento para a fórmula calcular o valor
      Utilities.sleep(500);
     
      // Converter o valor calculado para um valor estático
      var calculatedValue = cell.getValue();
      cell.setValue(calculatedValue);
    }


    // Coluna D
    sheet.getRange(row, 4).setValue(2100);


    // Coluna E
    sheet.getRange(row, 5).setValue('BRL');
  }
}

已经尝试使用更改和编辑触发器。 已经尝试使用时间作为触发器,但它会更改所有行,我需要它仅在新填充的行上触发,例如从 hubspot 发送的新数据。

google-sheets google-sheets-formula google-sheets-api hubspot hubspot-crm
1个回答
0
投票

function updateHubspot() {

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName("Sheet2")
  
  // establish key variables
  var lastRow = sheet.getLastRow()

  // get the data
  var dataRange = sheet.getDataRange()
  //Logger.log("DEBUG: the data range = "+dataRange.getA1Notation())
  var data = dataRange.getValues()

  // Loop through the rows to identify EPOCH Dates
  for (var i=1;i<lastRow;i++){ // row 0=header
    var rowData = data[i]

    // test if Column C is Epoch Data or 
    if(typeof rowData[2] !=="number"){//If not a number jump to next row
      // Logger.log("DEBUG: i:"+i+", date is not a number")
      continue
    }

    // update Column A
      // do nothing
    // update Column B
      rowData[1] = 'Definitivo - GADS - Conversões Offline - Match all'
    // update Column C
      var date = new Date(rowData[2]*1000);
      var formattedDate = Utilities.formatDate(date,"GMT+5:30", "MM-dd-yyyy HH:mm:ss");
      rowData[2] = formattedDate
    // update Column D
      rowData[3] = 2100
    // Update Column E
      rowData[4] = 'BRL'
    // Logger.log("DEBUG: i:"+i+", length = "+rowData.length+", rowData = "+rowData)

    // set the update range and update chnages for this row
    var targetRange = sheet.getRange(i+1,1,1,5)
    // Logger.log("DEBUG: the target range = "+targetRange.getA1Notation())
    targetRange.setValues([rowData])

  }
 
}

示例 - 之前

before


示例 - 之后

after

© www.soinside.com 2019 - 2024. All rights reserved.