这就是我通过Google脚本创建的流程。
问题是,当某人提交google表单时,他们会收到一张发票,但是他们收到的是来自之前信息的发票。然后再重复一遍。当有人提交时,发票内的信息来自于之前的那个人。
我是谷歌脚本的初学者,所以我不知道为什么会这样。
这是我用来发送自动电子邮件的代码。我把密码降到最低了。
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 + "\n\n";
if ( item === name ) {
body = value+" 様\n\n"+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.发布于 2019-08-20 09:33:53
感谢那些回答我问题的人。特别感谢Tanaike,他提出了一种解决办法,在那里我可以用它作为煤气的起动器。
正如我使用的Utilities.sleep(5000),每当有人提交谷歌表单,发票(PDF格式)被更新到最新的信息。由于我创建的程序并不是针对非常重的进程,这可能是它工作得非常好的原因。
发布于 2019-08-20 05:30:12
如果SpreasheetApp.flush()似乎不起作用,那么当然应该转到onFormSubmit - Installable触发器。
通过这种方式,您可以处理表单中的确切值,并使用与现在使用的相同的函数。您可以使用以下方法从表单提交中获取值,而不是获取最后一行值。
var name = e.namedValues['Name'][0]; var email = e.namedValues['Email'][0]; https://stackoverflow.com/questions/57566035
复制相似问题