Script Googleapps pour ouvrir une URL
Existe-t-il un moyen d'écrire un script googleapps? ainsi, lorsqu'il est lancé, une seconde fenêtre de navigateur s'ouvre pour www.google.com (ou un autre site de mon choix)?
j'essaie de trouver une solution à ma question précédente ici: puis-je ajouter un hyperlien à l'intérieur d'une boîte de messages D'une feuille de calcul Googleapps
4 réponses
vous pouvez construire une petite interface utilisateur qui fait le travail comme ceci:
function test(){
showURL("http://www.google.com")
}
//
function showURL(href){
var app = UiApp.createApplication().setHeight(50).setWidth(200);
app.setTitle("Show URL");
var link = app.createAnchor('open ', href).setId("link");
app.add(link);
var doc = SpreadsheetApp.getActive();
doc.show(app);
}
si vous voulez 'afficher' l'url, changez cette ligne comme suit:
var link = app.createAnchor(href, href).setId("link");
EDIT : lien vers une démo de la feuille de calcullecture seule parce que trop de gens y écrivent des choses indésirables... faites une copie à utiliser.
EDIT : !! UiApp a été déprécié par Google le 11 décembre 2014, cette méthode pourrait se casser à tout moment et nécessite une mise à jour pour utiliser le service HTML plutôt. !!
modifier : vous trouverez ci-dessous une implémentation utilisant le service html.
function testNew(){
showAnchor('Stackoverflow','http://stackoverflow.com/questions/tagged/google-apps-script');
}
function showAnchor(name,url) {
var html = '<html><body><a href="'+url+'" target="blank" onclick="google.script.host.close()">'+name+'</a></body></html>';
var ui = HtmlService.createHtmlOutput(html)
SpreadsheetApp.getUi().showModelessDialog(ui,"demo");
}
cette fonction ouvre une URL sans nécessiter d'interaction supplémentaire de l'utilisateur.
/**
* Open a URL in a new tab.
*/
function openUrl( url ){
var html = HtmlService.createHtmlOutput('<html><script>'
+'window.close = function(){window.setTimeout(function(){google.script.host.close()},9)};'
+'var a = document.createElement("a"); a.href="'+url+'"; a.target="_blank";'
+'if(document.createEvent){'
+' var event=document.createEvent("MouseEvents");'
+' if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){window.document.body.append(a)}'
+' event.initEvent("click",true,true); a.dispatchEvent(event);'
+'}else{ a.click() }'
+'close();'
+'</script>'
// Offer URL as clickable link in case above code fails.
+'<body style="word-break:break-word;font-family:sans-serif;">Failed to open automatically. <a href="'+url+'" target="_blank" onclick="window.close()">Click here to proceed</a>.</body>'
+'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>'
+'</html>')
.setWidth( 90 ).setHeight( 1 );
SpreadsheetApp.getUi().showModalDialog( html, "Opening ..." );
}
cette méthode fonctionne en créant une boîte de dialogue temporaire, de sorte qu'elle ne fonctionnera pas dans les contextes où le service D'UI n'est pas accessible, tels que l'éditeur de script ou une formule de feuilles personnalisées.
le Script Googleapps N'ouvre pas automatiquement les pages web, mais il peut être utilisé pour afficher un message avec des liens ou des boutons sur lesquels l'utilisateur peut cliquer pour ouvrir les pages web désirées.
il est intéressant de noter que UiApp est maintenant déprécié. À partir de Classe UiApp - Google Apps Script-Google Developers
Obsolète. Le service D'assurance-chômage était déprécié le 11 décembre 2014. De créer des interfaces utilisateur, utilisez la HTML service à la place.
l'exemple dans la page de lien du service HTML est assez simple,
Code.gs
// Use this code for Google Docs, Forms, or new Sheets.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Dialog')
.addItem('Open', 'openDialog')
.addToUi();
}
function openDialog() {
var html = HtmlService.createHtmlOutputFromFile('index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showModalDialog(html, 'Dialog title');
}
// Use this code for the older version of Sheets.
function onOpen() {
var menu = [{name: 'Open', functionName: 'openDialog'}];
SpreadsheetApp.getActive().addMenu('Dialog', menu);
}
function openDialog() {
var html = HtmlService.createHtmlOutputFromFile('index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getActive().show(html);
}
Une version personnalisée de l'index.html pour afficher deux hyperliens
<a href='http://stackoverflow.com' target='_blank'>Stack Overflow</a>
<br/>
<a href='http://meta.stackoverflow.com/' target='_blank'>Meta Stack Overflow</a>
La seule différence entre ces deux:
- var lien = app.createAnchor ("ouvert", href).setId("lien");
- var lien = app.createAnchor (href, href).setId("lien");
c'est que dans le premier cas, le lien afficher "ouvrir" dans la boîte de dialogue. Jusqu'à présent je n'ai trouvé aucun moyen de l'ouvrir automatiquement le lien... (voir https://developers.google.com/apps-script/class_anchor).
La seule autre façon d'ouvrir un doc automatiquement semble être:
var doc = DocumentApp.openById (foundFile.getId ());
mais alors je ne sais pas ce qu'il faut faire avec doc! I. e. il n'y a pas de doc.montrer.)(..