如何确保附加到自动电子邮件的PDF是最新信息?



这是我通过Google Apps Script创建的流程。

  1. 有人用谷歌表格写下他们的信息
  2. 信息存储在电子表格中
  3. 发票是在电子表格中创建的,其中包含收到的最新信息
  4. 发票自动转换为PDF格式
  5. 最新的发票附加到自动发送电子邮件
  6. 该人在提交谷歌表单后立即收到一封自动电子邮件
  7. ,其中包含发票

问题是,当有人提交谷歌表单时,他们会收到一张发票,但他们收到的是来自之前信息的发票。然后重复此操作。当有人提交时,发票内的信息来自之前的人。

我是Google Script的初学者,所以我不知道为什么会发生这种情况。

这是我用来发送自动电子邮件的代码。我已经最小化了代码。

function for_users2() {
var title = "【お問い合わせありがとうございます】";
var name = '名前'; 
var mail = 'メールアドレス'; 
var address = "";
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var column = sheet.getLastColumn();
var range = sheet.getDataRange();
var TIMESTAMP_LABEL = 'タイムスタンプ';
for (var i = 1; i <= column; i++ ) {
var item = range.getCell(1, i).getValue();

var value = range.getCell(row, i).getValue();
if ( item === TIMESTAMP_LABEL ) {
item = 'お問い合わせ日時';
}
if ( item === 'お問い合わせ日時' ) {
value = Utilities.formatDate(value, 'Asia/Tokyo',"YYYY'年'MM'月'dd'日'HH'時'mm'分'ss'秒'");
}

body += "■"+item+"n";

body += value + "nn";

if ( item === name ) {
body = value+" 様nn"+body;
}

if ( item === mail ) {
address = value;
}
}
body += body2;
var token = ScriptApp.getOAuthToken();
var pdf = UrlFetchApp.fetch("https://docs.google.com/spreadsheets/d/OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO/export?exportFormat=pdf&format=pdf&size=A4&portrait=true&fitw=true&sheetnames=false&printtitle=false&pagenumbers=false&gridlines=false&fzr=false&gid=00000000000", {headers: {'Authorization': 'Bearer ' +  token}}).getBlob().setName('請求書');

GmailApp.sendEmail(
address,
title,
body,
{
attachments: [pdf],
name: 'Automatic Emailer Script'
}
);
}

There is no error. It's just that the invoice attached is from one previous customer.

感谢回答我问题的人。特别感谢 Tanaike,他提出了一种解决方法,我可以将其用作 GAS 的启动器。

正如我Utilities.sleep(5000)使用的那样,每当有人提交谷歌表单时,生成的发票(PDF格式(都会更新为最新信息。由于我创建的程序不是针对非常繁重的进程,这可能是它运行良好的原因。

如果 SpreasheetApp.flush(( 似乎不起作用,那么您当然应该转到 onFormSubmit - 可安装触发器。

触发器 - 表单提交

通过这种方式,您可以处理表单中的确切值,并使用您现在使用的相同函数。您可以使用此功能从表单提交中获取值,而不是获取最后一行值。

var name = e.namedValues['Name'][0]; var email = e.namedValues['Email'][0]; 

最新更新