我碰到你的问题就来了多久,你问后,但如果你或其他人正在寻找答案,试试这个:
得到浏览器窗口关闭,创建指示一个简单的HTML文件本身关闭与指令window.top.close()
这样的:
关闭Window.html
<!DOCTYPE html>
<html>
<script>
window.top.close();
</script>
</html>
您需要返回以此为HTML输出,从而当Web应用程序运行s,它运行在客户端(正如Sandy在前面的回答中所述)。在你的场景中,你已经返回一个HTML输出来通知某些“[uniqueid]被标记为完整”,并且假定你不希望在脚本运行后关闭这个窗口,否则用户将不会收到提示你的意图。这就是为什么您需要保持指令window.top.close()
超出提供此警报的相同HTML输出的原因。为了实现这一点,只需逗号分隔两个HTML输出作为两个返回值。
下面是我提出的两个其他文件,用于为您的用例建模一个解决方案。仅供参考:我将面向用户的HTML打包成电子邮件,以提供方便的执行点,代码将请求发送电子邮件地址。
代码。GS
function doGet(e){
// code make changes to spreadsheet
var ss = SpreadsheetApp.openById([The key for the spreadsheet you wish you modify])
var sheet = ss.getActiveSheet()
var lastRow = sheet.getLastRow()
var params = JSON.stringify(e);
var paramsArray = JSON.parse(params)
sheet.getRange(lastRow + 1, 1).setValue('Code made changes to spreadsheet at ' + Date())
sheet.getRange(lastRow + 1, 2).setValue(paramsArray.parameter.change)
// here I want browser window to close
var uniqueid = "Someuniqueid"
return HtmlService.createHtmlOutputFromFile('Close Window'), HtmlService.createHtmlOutput(uniqueid + " is marked complete")
};
function mailIt() {
var emailAddress = Browser.inputBox('What email address do you want to send the WebApp to?')
var html = HtmlService.createTemplateFromFile('HTML Email to run Web App')
var htmlCode = html.getRawContent()
Logger.log(htmlCode)
MailApp.sendEmail({
name: "Publish WebApp for survey embed Test",
to: emailAddress,
subject: "Publish WebApp for survey embed Test",
htmlBody: htmlCode
})
}
HTML电子邮件运行Web应用程序
<!DOCTYPE html>
<html>
<form action=[Your current Web App URL in quotes]>
Send text to spreadsheet: <input type="text" name="change"><br>
<input type="submit" value="Submit">
</form>
</html>
显然,有一些悬而未决的问题 - 就像它为什么要求自动而你的Web应用程序似乎关闭窗口只打开一个窗口,为用户提供一条消息 - 但我相信你的用例比这更复杂,而你和其他人可以智能地利用这个例子中的校长对你有利。
你可能永远不会看到这个评论,但如果你这样做,我真的非常感谢你!你刚刚救了我工作。这很可能是整个网络上唯一真正解决这个问题的解决方案。我在这里经历了每一个问答! – 2018-03-02 12:42:52