2015-09-14 1 views
0

La feuille de calcul en question est un modèle. Il doit être copié avec la mise en forme intacte, donc l'API (avec laquelle je suis devenu plus familier récemment) semble être inutile à cette fin et est la façon dont je suis tombé sur google apps script.copier la feuille de calcul à une autre feuille de calcul de mon site

J'ai un script qui fonctionne bien si je le saisis dans un navigateur. Même si je l'ai mis dans le navigateur et l'ai autorisé pour la première fois, il ne peut apparemment pas être exécuté à partir d'ajax ou d'iframes. J'en ai besoin pour fonctionner silencieusement car la copie du modèle fait partie d'une procédure plus longue et le navigateur ne peut pas naviguer pour effectuer cette tâche.

J'étais un noob à google apis il y a quelques mois et assez bricolé pour que tout fonctionne. Maintenant, je suis un noob à google apps script et je n'ai tout simplement pas le temps d'apprendre tous les bons points pour que cette fonctionnalité fonctionne. J'espère qu'il y a quelque chose de simple qui me manque. Toute aide serait extrêmement appréciée.

Mon Code.gs suit au cas où il aide:

function doGet(e) { 
    var spreadsheetID = e.parameter.spreadsheetID; 
    var templateID = e.parameter.templateID; 
    var templateName = e.parameter.templateName; 
    var spreadsheetName = e.parameter.spreadsheetName; 
    var response = copyWorksheet(spreadsheetID, templateID, templateName, spreadsheetName); 
    return ContentService.createTextOutput(response); 
} 

function copyWorksheet(spreadsheetID, templateID, templateName, spreadsheetName){ 
    ss = SpreadsheetApp.openById(spreadsheetID); 
    ssTemplate = SpreadsheetApp.openById(templateID); 
    wsTemplate = ssTemplate.getSheetByName(templateName); 
    ws = wsTemplate.copyTo(ss); 
    ws.setName(spreadsheetName); 
} 

Répondre

0

Il n'y a aucun moyen d'utiliser Google Apps Script avec ajax ou iframe for security reasons. La seule chose que vous pouvez faire est embed your script as gadget, mais cela ne fonctionnera que si votre site est fait avec Google Sites, et non l'inverse. Ce que je vous suggère est qu'au lieu d'utiliser ajax, vous ouvrez simplement une fenêtre contextuelle qui exécute le script et les informe de fermer la fenêtre après le chargement, ou même de remplacer la dernière ligne de code dans doGet, avec ceci:

return HtmlService.createHtmlOutput('<b>You can now close this window</b>'); 

Cela apparaîtra comme un message après le chargement du script. Pour plus d'informations sur HtmlSerive, refer here.

+0

Merci pour votre réponse perspicace. Depuis que j'ai donné l'accès à l'application, cela n'a pas de sens pour moi que l'autorisation que j'ai déjà accordée ne peut pas être utilisée dans un iframe (c'est pourquoi j'ai supposé que cela pouvait être fait). En outre, vous ne savez pas exactement comment utiliser Google Sites pour sécuriser davantage les données. Les plus hauts ne veulent pas aller avec Google Sites et nous ne pouvons pas avoir des popups encore et encore toute la journée, donc nous avons abandonné l'idée de mise en forme. Par curiosité, peut-il être exécuté à partir d'un cadre, plutôt que d'un iframe ou est-ce toujours un problème de sécurité? –