Ich versuche, dynamische App-Skript-Komponenten zu erstellen, die mit dynamischen Daten für jede Instanz des Skripts zu meiner Site hinzugefügt werden können. Ich habe versucht, Parameter zu machen, aber ich bin mir nicht sicher, ob das der beste Weg ist, um das zu erreichen. Ich möchte zum Beispiel ein Bildskript erstellen, das mit dynamischen Links geladen und in Google Sites eingefügt wird. Ich möchte nur ein Bildskript kann mit dynamischen URLs mehrfach in die Seite geladen werden. Wie soll ich damit umgehen? Kann das gemacht werden? Vielen Dank.Wie kann ich dynamische Komponenten mit Google App Scripts für Google Sites erstellen?
Antwort
Diese Version erstellt Scroll-Bilder oder eine Diashow. Und es erstellt die Bild-Tags in einem ansonsten leeren div. Sie können der Spalte A Ihrer Tabelle so viele Bilder hinzufügen, dass das Skript den Rest erledigt.
image.html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div id="myimages"></div>
<div id="slideshow" style="display:none;">
<img id="slide" src="" width="450"/>
</div>
<input type="button" value="Start Slide Show" onClick="startShow();" />
<input type="button" value="Stop Show" onClick="stopShow();" />
<div id="resp" style="display:none;">
<h1>Response</h1>
<p>Your data has been received.</p>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
var nextslide=0;
var myslides='';
var mytimer;
$(function() {
google.script.run
.withSuccessHandler(setURL)
.getURL();
});
function setURL(urlA)
{
for(var i=0;i<urlA.length;i++)
{
var s='img' + Number(i+1);
var s1= '#img' + Number(i+1);
$('#myimages').append('<img id="' + s + '" src="' + urlA[i] + '" />');
$(s1).attr('height','450');
}
myslides=urlA;
}
function startShow()
{
$('#myimages').css('display','none');
$('#slideshow').css('display','block');
showSlide();
}
function showSlide()
{
document.getElementById('slide').src=myslides[nextslide];
if(++nextslide > myslides.length-1)
{
nextslide=0;
}
mytimer=window.setTimeout(showSlide,5000);
}
function stopShow()
{
window.clearTimeout(mytimer);
$('#myimages').css('display','block');
$('#slideshow').css('display','none');
}
function loadTxt(from,to)
{
document.getElementById(to).value = document.getElementById(from).value;
}
console.log('My Code');
</script>
</body>
</html>
Code.gs
function doGet()
{
var html = HtmlService.createHtmlOutputFromFile('image');
return html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}
function getData(a)
{
var ts = Utilities.formatDate(new Date(), "GMT-6", "yyyy-MM-dd' 'HH:mm:ss");
a.push(ts);
var ss=SpreadsheetApp.openById('SS_ID')
ss.getSheetByName('Form Data').appendRow(a);
return true;
}
function getURL()
{
var ss=SpreadsheetApp.openById('SS_ID');
var sht=ss.getSheetByName('imgURLs');
var rng=sht.getDataRange();
var rngA=rng.getValues();
var urlA=[];
for(var i=1;i<rngA.length;i++)
{
urlA.push(rngA[i][0]);
}
return urlA;
}
Hier ist ein einfaches Beispiel:
image.html Datei:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div id="data">
<br /><img id="img1" src="" alt="img1" width="300" />
<br /><img id="img2" src="" alt="img2" width="300" />
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
google.script.run
.withSuccessHandler(setURL)
.getURL();
});
function setURL(urlA)
{
for(var i=0;i<urlA.length;i++)
{
var s='img' + Number(i+1);
document.getElementById(s).src=urlA[i];
}
}
console.log('My Code');
</script>
</body>
</html>
Code.gs Datei:
function doGet()
{
var html = HtmlService.createHtmlOutputFromFile('image');
return html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}
function getURL()
{
var ss=SpreadsheetApp.openById('1CElNRoVTVa33RS3kJWmRoCXJDgWndEPiZrCxDC5j-WU');
var sht=ss.getSheetByName('imgURLs');
var rng=sht.getDataRange();
var rngA=rng.getValues();
var urlA=[];
for(var i=1;i<rngA.length;i++)
{
urlA.push(rngA[i][0]);
}
return urlA;
}
Dies wird die Bild-URL aus Blech mit dem Namen 'imgURLs' die entsprechende Tabellenkalkulations-ID, und ich benutze nur die Spalte A (nur mit A2 und A3 jetzt, aber Sie können 1 oder mehr Bilder verwenden. Sie können als Webapp speichern und auf die klassischen Websites gehen, wählen Sie Google Apps und Typ einfügen e in der Web-App-URL aus dem Veröffentlichungsmenü und das war's.
- Gehen Sie zu Sites verwalten -> Apps Script, um ein neues Skript in Ihre klassische Website einzubetten.
Erstellen Sie eine neue Funktion der dynamischen HTML, die Sie
function makePage() { var page = SitesApp.getCurrentPage(); //create your html page.setHtmlContent() }
hinzufügen doGet-Methode müssen zu bauen, die makePage()
function doGet(e) { makePage(); }
Veröffentlichen Sie Ihr Skript als Web-App Einstellung nennen Das Skript läuft so wie du. Holen Sie sich die URL zu Ihrem Skript.
Es gibt verschiedene Möglichkeiten, diesen Code auf Ihrer Seite auszuführen. Ein Mechanismus wäre, einen Aufruf von App Script auf Ihrer Sites-Seite einzufügen. Geben Sie die URL zu Ihrer App Script-Webanwendung im Gadget-Assistenten ein.
- 1. Wie kann ich mithilfe von Google Sites und Google App Scripts die CSS-Klasse eines HTML-Elements dynamisch ändern?
- 2. Google Scripts: Datepicker für die Datumseingabe erstellen
- 3. Google App Scripts clientseitig ausführen
- 4. Google Scripts Editor
- 5. Wie kann ich ein Konto in Google App Scripts für Nutzer mit mehreren Konten auswählen?
- 6. Wie ersetzt man Text in Google Spreadsheet mit App Scripts?
- 7. Wie generiere ich Google-Präsentationsfolien mit Google App Script?
- 8. Google Scripts copyto Ausgabe
- 9. Google Scripts Fehler
- 10. Google Scripts Returning Undefined
- 11. Google Scripts entsprechen regex
- 12. Tage hinzufügen - Google Scripts
- 13. Wo finde ich benutzerdefinierte Designs für Google Sites?
- 14. Google Scripts Looping Zellen
- 15. Alternatives Login für Google-Nutzer für Google App-Engine erstellen
- 16. Neue Google Sites in den Google-Suchergebnissen
- 17. Google Scripts CacheService Optimization/Limit
- 18. Umgang mit Dauer in Google Tabellen Scripts
- 19. Google Scripts WebApp POST Körper
- 20. Google Scripts - Funktion Fehler mit Zeitauslöser
- 21. Google Anmelden für Python Google App Engine
- 22. Google Picker wird bei Verwendung in Google Sites leer angezeigt
- 23. Google-Tabelle Scripts: wie Datarange gefiltert wird
- 24. Wie kann ich ein Google per E-Mail über Google Apps Scripts senden?
- 25. Google Scripts "Maximale Ausführungszeit überschritten"
- 26. Google App Engine: Regie zu Google Sites stattdessen für Domain Name
- 27. Schaltfläche "Blatt löschen" - Google Scripts
- 28. Google Scripts automatisieren mit spezifischen Format
- 29. XML mit Javascript (in Google Scripts) analysieren
- 30. Erstellen von Google In-App-Produkte mit Google APIs
Werden Sie die neuen Google Sites oder die klassischen Websites verwenden? Siehe den Haftungsausschluss auf dieser Seite: https://developers.google.com/apps-script/reference/sites/page – terrywb
Ich verwende die klassischen Sites. – LadyT
Versuchen Sie, ein [mcve] zu erstellen, und fügen Sie der Frage den Code hinzu. –