我碰到你的問題就來了多久,你問後,但如果你或其他人正在尋找答案,試試這個:
得到瀏覽器窗口關閉,創建指示一個簡單的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