I have created a web app with the apps script however I am having a problem. I have several links in a menu to navigate in the application and I have another link that goes to a Sheets file.
I would like this link to open in a new tab in my browser. And this is where I encounter my problem. The Sheets opens in a new tab but I get the following error message in the web app :
"Unsafe attempt to initiate navigation for frame with origin 'https://script.google.com' from frame with URL 'https://n-psool6bzsn7nbbxcwije73kogaweb6gvevl5w2i-0lu-script.googleusercontent.com/userCodeAppPanel'. The frame attempting navigation of the top-level window is sandboxed with the 'allow-top-navigation-by-user-activation' flag, but has no user activation (aka gesture)"
And when I click on another link, the Sheets opens in the same tab.
Here is the JS that opens the Sheets in a new tab :
function sheets(){
var url = document.getElementById("url").value;
var link = document.createElement('a');
link.href = "https://docs.google.com/spreadsheets/d/1oATOMdL5HdCx87YjPS79DVvZee_s6y5_J3t9oloYeZI/edit#gid=0";
link.id = 'linkURL';
window.open(document.body.appendChild(link));
document.getElementById("linkURL").click();
}
Here is the beginning of one of the html pages (the navigation bar is identical for all pages :
<nav id="navigation" class="navbar navbar-expand-lg navbar-dark ">
<div class="collapse navbar-collapse" id="navbarNav">
<input type="button" class="buttonNav" id="buttonSelected" value="Page 1"/>
<input type="button" class="buttonNav" id="button" value="Page 2" onclick="formulaire()"/>
<input type="button" class="buttonNav" id="button" value="Page 3" onclick="archives()"/>
<input type="button" class="buttonNav" id="button" value="Sheet" onclick="sheets()"/>
</div>
<?var url = getUrl();?><input type="hidden" value="<?= url ?>" id="url"/>
</nav>
And here is the apps script code:
function doGet(e){
if(!e.parameter.page){
return render('Index');
}
else if(e.parameter['page'] == 'Formulaire'){
var htmlOutput = HtmlService.createTemplateFromFile('Formulaire');
return htmlOutput.evaluate();
}
else if(e.parameter['page'] == 'Index'){
var htmlOutput = HtmlService.createTemplateFromFile('Index');
return htmlOutput.evaluate();
}
else if(e.parameter['page'] == 'Archives'){
var htmlOutput = HtmlService.createTemplateFromFile('Archives');
return htmlOutput.evaluate();
}
}
function getUrl(){
var url = ScriptApp.getService().getUrl();
return url;
}
I saw this post but i don't know how can i apply its in my dev.
Thank you for your help.