Google apps script 基于表单生成的vlookup单元格发送电子邮件

Google apps script 基于表单生成的vlookup单元格发送电子邮件,google-apps-script,google-sheets-api,google-sheets-formula,google-forms,Google Apps Script,Google Sheets Api,Google Sheets Formula,Google Forms,我正在寻找一个脚本,将发送一个自动电子邮件给卖家(第J列)时,改变了他的客户之一。更改是通过谷歌表单进行的。所以表单链接到一个电子表格,我在其中添加了一个选项卡,我在客户编号的J列中做了一个vlookup。当我手动输入电子邮件地址时,它起作用,但当它是vlookup公式时,它不起作用。。。这是我现在的代码 提前谢谢 function twchange3(e) { var range = e.range; if (e.range.getColumn()== 10) { var sh

我正在寻找一个脚本,将发送一个自动电子邮件给卖家(第J列)时,改变了他的客户之一。更改是通过谷歌表单进行的。所以表单链接到一个电子表格,我在其中添加了一个选项卡,我在客户编号的J列中做了一个vlookup。当我手动输入电子邮件地址时,它起作用,但当它是vlookup公式时,它不起作用。。。这是我现在的代码

提前谢谢

function twchange3(e) {
  var range = e.range;
  if (e.range.getColumn()== 10) {
    var sheet = SpreadsheetApp.getActiveSheet();
    var row = SpreadsheetApp.getActiveRange().getRow();
    var value = sheet.getRange(row, 1, 1, 10).getValues();
    var email = value[0][9];
    var router = value[0][1];
    var noclient = value[0][3];
    var nomclient = value[0][4];
    var twactuel = value[0][5];
    var twdemande = value[0][6];
    var raison = value[0][7];
    MailApp.sendEmail(value[0][9], "Demande de changement de Time-Window", 
                      "Bonjour voici une demande de changement de Time-Window pour votre client " + nomclient + "\n\n" + 
                      "Numéro de client: " + noclient + "\n\n" + 
                      "Time-Window Actuel: " + twactuel + "\n\n" + 
                      "Time-Window demandé: " + twdemande + "\n\n" + 
                      "Raison: " + raison + "\n\n" +
                      "Auteur de la demande: " + router + "\n\n");
  }
} 

让我把你说的话改一改

  • 客户端提交一个Google表单,该表单将结果发送到Google工作表的选项卡A
  • 然后是选项卡B,它使用VLOOKUP函数检查Google表单中最新的结果
  • 当您在选项卡a中使用电子邮件手动更改单元格时,脚本将正常工作
  • 当您使用Google表单提交响应时,脚本不会运行
这里有一些问题

手动更改工作表时,将激活OneEdit触发器。 当您通过Google表单更新工作表时,不太可能触发onEdit,因为onEdit通常是用户域。很可能应该触发onChange,而您甚至可能没有设置它。 然后,即使您设置onChange并启动它,我也会说更改不太可能发生在选项卡B的VLOOKUP单元格中,因为后者只是一个过滤器,而实际更改很可能发生在选项卡a中。我之所以说可能是因为我决定不测试它,因为您对问题的描述不是很清楚

因此,这里实际上不需要VLOOKUP,只需使用脚本直接读取正在更改的单元格即可


甚至更好的解决方案可能是直接从谷歌表单读取响应,并使用自己的脚本和触发器。

我不清楚你说的是什么,但我猜你是在一张工作表上手动进行了更改,触发了onEdit()触发器,该触发器随后发送了电子邮件。但是,当更改不涉及用户编辑时,则电子邮件不会。这是正常的行为,因为onEdit事件仅由用户操作创建。但是你可以使用onFormSubmit触发器发送电子邮件。我不确定我是否理解你的问题。VLOOKUP的目的是什么?一份经过消毒的电子表格副本可能有助于理解您的问题。谢谢Cooper,但由于电子邮件收件人位于另一个选项卡中,我是否需要更改代码本身,还是只需更改触发器?我会尽量弄清楚。我们希望使用谷歌表单自动通知销售代表我们正在对他的一位客户进行一些更改。基本上,表单要求提供客户编号和变更说明。该表单链接到一个google sheet选项卡,然后在另一个选项卡中,我使用索引公式复制链接选项卡和列中的内容,然后我使用客户编号的vlookup获取销售代表的电子邮件地址,但因为这是一个公式,我认为google sheet没有检测到我正在进行编辑或更改(我试了两个扳机)