【发布时间】:2020-02-14 19:50:05
【问题描述】:
当我们的现场代表在工作现场时,我们正在使用 Google 表单从他们那里收集数据。我们使用脚本来填充 4 个不同字段的下拉值并定期运行。这使他们不必打字和可能出错。
所有这些字段都是预先确定的,因此如果他们选择项目 #1,我们已经知道地址、经理和客户的值。这些值存储在结果表单的第二个选项卡中,理论上可以用作查找。
我怀疑这些字段是否需要包含在内,但是当用户提交表单时,数据会使用附加组件通过电子邮件发送,并且它会在主题中使用其中的一些字段。我想收件人也想要这些信息。
我可以自己制作触发器吗?如果我有一个项目 ID 何时更改的触发器,我想我可以从电子表格中更新其他人。
或者,如果有一个 OnNextPage 触发器可以用来填充这些值。
提交表单时是否需要添加/更改值?
我认为以下是我想要做的(感谢@OMilo),但我正在努力查找:
函数 onFormSubmit(e) { Logger.log("[METHOD] onFormSubmit");
sendEmail(e.range); }
函数发送电子邮件(范围){
// 在这里我们可以选择表单中选择的用户: var itemResponse = e.response.getItemResponses()[1557784536]; // 使用项目的任何索引,在我的例子中是 0。 var kmbProjectNumber = itemResponse.getResponse();
//LOOKUP KMB PROJECT NUMBER IN SHEET: "New - KMB Design Visit Closeout (Responses)" TAB: "KMB Lookups"
var ss = SpreadsheetApp.OpenByID('REDACTED');
var lookups = ss.getSheetByName("KMB Lookups");
//In Column named'KMB Project ID' find record from bottom where value = kmbProjectNumber
//Get value for column named 'Site Address'
//Get value for column named 'KMB Project Manager'
//Get value for column named 'Client Assigning this Work'
// FETCH SPREADSHEET //
var values = range.getValues();
var row = values[0];
//WRITE FOUND VALUES TO SPREADSHEET
//Set row[3] to Site Address
//Set row[4] to Project Manger
//Set row[5] to Client
var svProjectManager = row[4]; //Update manually //E
var svClient = row[5]; //Update manually //F
// EXTRACT VALUES //
var svTimeStamp = row[0]; //A
var svInitials = row[1]; //B
var svProjectID = row[2]; //C
var svSiteAddress = row[3]; //Update manually //D
var svProjectManager = row[4]; //Update manually //E
var svClient = row[5]; //Update manually //F
var svNOCNeeded = row[6]; //G
// PREPARE EMAIL //
var emailRecipients = "REDACTED";
var emailSubject = "Field Visit Completed for "+svProjectManager+" "+svProjectID;
var emailBody = "" //Format using variables set
// SEND EMAIL //
}
【问题讨论】:
标签: google-apps-script google-forms