Ich habe ein Programm, das vollständig in App Script ausgeführt werden muss (die Benutzer, die es verwenden, haben keine Installationsrechte auf ihrer Computer für Addons). Das Programm erstellt Geschäftsanfragen und eine Menge anderer Dinge basierend auf den Informationen in den Anführungszeichen.showModalDialog() wird ausgeführt, obwohl das if() - Gatter keine wahr ist
Ich muss Kopien der Anführungszeichen machen, um sie zu speichern, dann den Code autorisieren, auf diesen Kopien zu laufen, so dass, wenn Änderungen gemacht werden müssen, sie sein können.
function onOpen(e) {
var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
var authStatus = authInfo.getAuthorizationStatus();
var authRequired = (authStatus == ScriptApp.AuthorizationStatus.REQUIRED);
Logger.log(authStatus);
Logger.log(authRequired);
if (authRequired) {
Logger.log('Authorization required');
var authScript = '<script type="text/javascript">'+
'function openAuthWindow() {'+
'window.open("'+authInfo.getAuthorizationUrl()+'");'+
'}'+
'</script>';
var alert = HtmlService.createHtmlOutputFromFile('sidebarHeadOpen')
.append(HtmlService.createHtmlOutput(authScript).getContent())
.append(HtmlService.createHtmlOutputFromFile('authorizeAlert').getContent());
SpreadsheetApp.getUi().showModalDialog(alert, 'Authorization Required');
} else {
var frontend = e.source;
initialize(frontend);
}
}
Mein Problem ist, dass der Code in "if (authRequired) {...}" noch ausgeführt wird, auch wenn es nicht sollte. (d. h. wenn authStatus NOT_REQUIRED ist und authRequired false ist) Das Protokoll sollte zwar "Authorization required" anzeigen, wenn dieser Code ausgeführt wird, aber nicht. Die einzigen Zeilen, die von dieser Anweisung ausgehen, sind "var authScript = ...;" Linie, der "var alert = ...;" Zeile und die "SpreadsheetApp.getUi(). showModalDialog();" Linie. Welches ist die Sache, die ich versuche, nicht passieren zu lassen. Gibt es eine Möglichkeit, das zu tun?
Als Referenz ist das, was alert.html wie folgt aussieht:
<html>
<head>
<base target="_top">
<script type="text/javascript">
function openAuthWindow() {
window.open("'+authInfo.getAuthorizationUrl()+'");
}
</script>
</head>
<body>
Please authorize this copy of the form to run.<br>
<br>
Without authorization, it will not do anything automatically.<br>
<br>
<input type="button" value="Review Permissions" onclick="google.script.host.close(); openAuthWindow(); google.script.run.runInstall();" />
</body>
</html>
(Außerdem gibt es einen einfacheren Weg für die Zulassung zu veran Vielleicht eine auch nur programmatisch es zu erhalten, ohne dass der Benutzer aufgefordert? Ich habe seit einer Woche gesucht, und habe nicht gefunden.
Ist dies eine Web App? Wie läuft 'onOpen()'? Aus einer Tabelle? –