Zapier到Google表格 - 复制公式

时间:2018-04-10 21:10:39

标签: google-sheets google-sheets-api zapier

我正在尝试使用现有的zapier集成自动化复制公式功能。

对于符合特定条件的新电子邮件,zapier会在a / b / c列中向下复制email / message_original / date_time。在D列中,我有一个公式,我想自动应用于所有新行 - 您可以看到第18行D列是空白的,因为它尚未应用。

我遇到谷歌推出我的公式行的问题 - 我试过,数组公式等等......没有成功。

Zapier Google Sheet:

ZAPIERGOOGLESHEET

4 个答案:

答案 0 :(得分:1)

您需要在Zapier中编写公式并让Zapier将其与电子邮件,message_original和date_time一起粘贴。见图示:

enter image description here

答案 1 :(得分:1)

你可以通过多步骤来实现这一目标。

你的zap的第一步是从外部来源提取数据。

zap的第二步是使用来自外部来源的信息填充您的Google表格(就像您现在正在做的那样)。

然后添加第三步:Google表格>更新电子表格行。

对于Row,选择"使用自定义值(高级)",然后选择" ID"从上一步开始。

然后,对于" message_updated",从Google表格粘贴您的公式。您只需要将任何单元格引用更新为动态。因此,例如,如果您的公式引用" B5"你需要改变它来代替参考" B"然后使用Zapier引用" ID"从zap第2步开始。看起来有点像这样:

Relative cell reference in Zapier

你必须分两步这样做,因为在Zapier中对它进行相对引用之前,该行必须存在。

答案 2 :(得分:1)

因为我也在寻找一种解决方案,所以找不到答案。我最终创建了一个Google脚本,该脚本从上一行复制了所有行公式。 (您可以使用getFormulasR1C1()完成此操作,为您提供相对版本),然后将其包装为可调用的doGet(),以便下一步可以使用zapier webhook。 在发布->发布->部署为Web应用程序下部署应用程序。确保范围是所有人,因为Zapier Web挂钩将运行此范围。

function doGet(e) { // the zap will call here - use webhook and GET and make sure to set send as JSON to NO. 
                    //The paramater is called row so in query params in Zapier but "row" and in the value the row number you want to update 
                  
 var update = updateformulas( e.parameter.row); 
 var appData = {
 "heading": "Update",
 "DidUpdate": update  // tell the zap if we updated somethine
 };
 var JSONString = JSON.stringify(appData);
 var JSONOutput = ContentService.createTextOutput(JSONString);
 JSONOutput.setMimeType(ContentService.MimeType.JSON);
 return JSONOutput
}

function updateformulas(row,sheet = SpreadsheetApp.openById("<add target spreadsheet id>" ).getActiveSheet() )  {
var update = false;
var maxcols = sheet.getLastColumn();
if (row>0 ||maxcols>0) {
  var range = sheet.getRange(row-1,1,1,maxcols);
  var formulas = range.getFormulasR1C1(); // get all formulas from the PREVIOUS row
  for ( i=0; i<maxcols ;i++ ) {
    if (formulas[0][i]) { // if there was a formula in that column 
      sheet.getRange(row,i+1).setFormulaR1C1(formulas[0][i]); // set the formula for the current row
      update = true;
    }
  }
}
return update

答案 3 :(得分:0)

我已经与arrayformula一起工作了。 OP提到这不适用于他们,但也许最近两年对Zapier或Google Sheets API的更新已经改变了这一点。 Zapier docs确实提到,工作表上的击打可能需要3分钟才能触发,因此可以给公式留出足够的时间进行抄写。

我用一个简单的公式=arrayformula(B2:B&C2:C)进行了测试,发现新条目上的Zap总是从arrayformula列中选取正确的值