我正在使用 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 发送的新数据。
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])
}
}
示例 - 之前
示例 - 之后