0

Ich versuche die Richtlinien zu befolgen, die Google für die Migration zu IFRAME für Google Apps Script-Dialoge angegeben hat. Alle Dialoge, die ich migriere, funktionieren jedoch nicht mehr - nur der Titel wird angezeigt und der folgende Fehler wird an die Konsole ausgegeben: "Uncaught TypeError: Kann Eigenschaft 'call' von undefined nicht lesen". HierGoogle Apps Script IFRAME-Migration in Google Spreadsheet funktioniert nicht

ist der Link zu einem einfachen Beispiel des Problems: https://docs.google.com/spreadsheets/d/1n5Lr6LuMj4Cyag4Z_54jRKvWiwV-b8dquREF5T4pzMY/edit?usp=sharing

Es ist eine leere Tabelle, die ein zusätzlichen „Dialog“ Menü hat, wählen Sie „Dialog anzeigen“ aus dem „Dialog“ Menü, um das Verhalten zu sehen.

function onOpen() 
{ 
    SpreadsheetApp.getUi().createMenu("Dialog") 
    .addItem("Show Dialog","showDialog") 
    .addToUi(); 
} 

function showDialog() 
{ 
    var html = HtmlService.createHtmlOutputFromFile('Index').setSandboxMode(HtmlService.SandboxMode.IFRAME); 
    SpreadsheetApp.getUi().showModalDialog(html, 'Dialog title'); 
} 


<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script> 
     function onOK() 
     { 
     console.log("ok"); 
     } 

     function onCancel() 
     { 
     console.log("cancel"); 
     } 
    </script> 
    </head> 
    <body> 
    <div> 
    <input type="text" id="editme" size="8"> 
    <button type="button" id="ok" style="display: block; position: absolute; top: 150px; width: 60px;" onclick="onOK()">OK</button> 
    <button type="button" id="cancel" style="display: block; position: absolute; top: 150px; left: 100px; width: 60px;" onclick="onCancel()">Cancel</button> 
    </div> 
    </body> 
</html> 

Antwort

0

Eigentlich gibt es bereits ein bestehendes Problem nur vor ein paar Monate in google-apps-script-Themen bezüglich HTMLService migration to IFRAME sandbox fails: Cannot read property 'call' of undefined angemeldet. Und basierend auf diesem Thema Thread, ein paar Entwickler auch begegnet es und das wurde noch nicht gelöst.

In jedem Fall möchten Sie vielleicht versuchen, von HTML Service: Restrictions und HTML Service: Best Practices zu überprüfen und zu notieren, da kann nur etwas sein, das hätte verpasst werden können.

Versuchen Sie auch die vorgeschlagene Lösung in diesem SO Post - IFRAME and NATIVE Mode in Google Apps Script. Ich hoffe etwas von diesen Arbeiten für dich.

+0

Ja, ich habe das bestehende Problem in Google-Apps-Skript Probleme vor 6 Monaten protokolliert. Sie haben es als einen Fehler ohne Kommentar markiert. Sie haben 3 Wochen Zeit, den NATIVE-Modus herunterzufahren und haben keinen funktionierenden IFRAME-Modus für diejenigen von uns, die sie in Google Spreadsheet verwenden. Ich habe hier gepostet, um zu sehen, ob irgendjemand ein Problem mit meinem Beispiel nicht erkennen kann, oder das ist wirklich ein völliger Mangel an Sorgfalt von Google-Entwicklern. – Hilo

Verwandte Themen