让我们说我是一名招聘经理,我需要在20个不同的日期对20位不同的候选人进行面试,我需要一个"是的"或"不"确认他们是否可以参加上述日期。我只想在表格中显示分配给受访者的日期,但我需要隐藏在表格中的其他日期(对于其他采访者),以便他们出现在"回复"片。同样重要的是他们感觉特别"所以我需要在预先填充的文本字段中通过名称来解决它们(这个文本字段将是响应中填充的内容)片)。让候选人彼此隐藏是非常重要的,这样他们就不会气馁,所以做一个预先填充的"下拉"他们可以选择的菜单不是一个选项。
理想情况下,这些受访者在打开表格时只会看到两个字段:
回顾:
我尝试过......
有谁知道实现这一目标的最佳方式?
提前致谢。
GOOGLE FORM
┌────────────────────────┐
│ NAME (pre-populated) │
└────────────────────────┘
Will you be attending on <custom-date>?
⦿ YES
⦾ NO
⦾ MAYBE
╔════════╗
║ SUBMIT ║
╚════════╝
GOOGLE SHEET(回应)
# | NAME | 1/1 | 1/2 | 1/3 | - - - - - -> 1/20
---------------------------------------------------------
1 | ARON | YES | | |
---------------------------------------------------------
2 | BRAD | | YES | |
---------------------------------------------------------
3 | CRIS | | | NO |
---------------------------------------------------------
| | | | |
| | | | |
20 | ZEEK | | | |
V V V V V
答案 0 :(得分:3)
您可以为每位受访者创建具有唯一网址参数的个性化链接,并使用应用脚本doGet(e)功能获取这些参数并提供个性化网页。 https://developers.google.com/apps-script/guides/web
简而言之,可以像下面一样创建个性化链接,以向webApp发送获取请求 https://script.google.com/macros/s/...../exec的名称= A2&安培;日期= 1 /二千〇一十七分之二强> 并获取URL参数:
function doGet(e){
var param = e.queryString //Will get name=A2&date=1/2/2017
//or
var param = e.parameter //Will get {"name": "A2", "date": "1/2/2017"}
}
您可以使用简单的= CONCATENATE公式创建个性化链接,如本例spreadsheet中的&#34; Sheet2&#34;。您可以将此个性化链接发送给每位受访者,当他们访问该网页时,您可以在URL参数上为他们提供个性化网页,如下所示:
function doGet(e) {
var param = e.queryString
var parameters = param.split("&")
// This just checks only 2 parameters are present else gives a invalid link
if (param != null && parameters.length == 2){
param = e.parameter
var name = param.name
var date = param.date
var html = HtmlService.createHtmlOutputFromFile("Invite")
var htmlTemplate = html.asTemplate().getRawContent()
// use the replace function to input the name and date on the page
// You also replace the hidden input values at the same time
htmlTemplate = htmlTemplate.replace(/customName#/gi, name )
htmlTemplate = htmlTemplate.replace(/customDate#/gi, date)
html = HtmlService.createHtmlOutput(htmlTemplate).asTemplate().evaluate()
}else {
var html = HtmlService.createHtmlOutput("<b> Invalid Link <b>")
}
return html
}
Html代码:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div id ="div_form">
<form id="RSVPform" onSubmit = "return false">
<h1> customName# </h1> <br>
<input type = "hidden" id = "name" value = 'customName#' >
Will you be attending on customDate# <br>
<input type = "hidden" id = "date" value = 'customDate#' >
<input type = "radio" name = "RSVP" value = "Yes" checked>Yes <br>
<input type = "radio" name = "RSVP" value = "No">No <br>
<input type = "radio" name = "RSVP" value = "Maybe">Maybe <br>
<button type = "button" onClick ="sendRSVP()">Submit</button>
</form>
</div>
<div id="accept"></div>
<script>
function sendRSVP(){
var resp = []
resp[0] = document.getElementById("name").value
resp[1] = document.getElementById("date").value
resp[2] = document.querySelector('input[name="RSVP"]:checked').value;
google.script.run.withSuccessHandler(closeForm).enterRSVP(resp)
}
function closeForm(foundIndex){
var subResp
if(foundIndex){
subResp = "Thank You for your response"
} else {
subResp = "Oops! Cannot find the meeting event"
}
document.getElementById("div_form").style.display = "none"
document.getElementById("accept").innerHTML = subResp
}
</script>
</body>
</html>
最后,此代码将检查并输入对电子表格中相应行和列的响应
function enterRSVP(resp){
var ss = SpreadsheetApp.openById(id)
var sheet = ss.getSheetByName("Sheet1")
var RSVPdata = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn()).getValues()
//match name
for (var i=0;i<RSVPdata.length;i++){
if(resp[0] == RSVPdata[i][0]){
var setRowIndex = true
break
}
}
if(setRowIndex)
var rowIndex = i+1
else
return false
//Match Date
for (var i= 0; i<RSVPdata[0].length; i++){
if(resp[1] == RSVPdata[0][i]) {
var setColIndex = true
break
}
}
if(setColIndex)
var colIndex = i+1
else
return false
sheet.getRange(rowIndex,colIndex).setValue(resp[2])
return true
}
您可以在此spreadsheet找到一个有效的示例。只需使用Sheet2上的任何链接即可获得个性化表格。提交此表单后,Sheet1将会更新。
注意:在上面的示例中,所有日期都被格式化为文本/字符串。这是为了防止串联期间出现问题。其次,您必须编写一个脚本,将上述链接发送给每个受访者,这很容易实现。