2017-02-23 2 views
1

Ich habe ein Add-on für Docs, in dem ich den Benutzer über seine neuen Updates und Funktionen anzeigen muss, indem eine Warnung in OnOpen (e) -Funktion aufgerufen wird. Mit einem wichtigen Punkt, der nur einmal im LebenAusführen einer DocumentApp.getUi() - Warnung nur einmal, um neue Funktion zu informieren

OR

Wie ein nicht angezeigt Taste erneut.

Wie mache ich das?

function onOpen(e) { 
    DocumentApp.getUi().createAddonMenu() 
     .addItem('ez-notes', 'Sidebar') 
     .addToUi(); 
    DocumentApp.getUi().alert("new feature..."); //will trouble user everytime. 
} 

Antwort

2

Es gibt einen reservierten Funktionsnamen für onInstall()

Es verwendet Add-ons genannt wird. Es wird nur ausgeführt, wenn das Add-on installiert ist.

function onInstall() {} 

Dies wird nicht ausgeführt, wenn eine neue Version Ihres Add-On veröffentlicht wird. Wenn Sie möchten, dass ein Code nur einmal pro neuer veröffentlichter Version ausgeführt wird, müssen Sie sowohl die aktuelle Version als auch die letzte Version, die der Benutzer verwendet hat, speichern und dann vergleichen, wenn Code ausgeführt wird. Sie können speichern, was die Versionsnummer im Eigenschaften-Dienst sein sollte, in den Skripteigenschaften oder die aktuelle Versionsnummer fest codieren. Jedes Mal, wenn die oOpen() - Funktion ausgeführt wird, müssen Sie einen Servercode ausführen, der die aktuelle Version mit der letzten bekannten gespeicherten Version vergleicht, die der Benutzer verwendet hat.

Ich habe eine Funktion, die nichts tut, aber zurückgeben, was die aktuelle neueste Version sein sollte, und ich ändere diese Zahl, wenn eine neue Version veröffentlicht wird:

function newestVersion() {return "12";}// Return the newest version number 

function onOpen() { 
    var newestVersion,lastUsedVersion; 

    newestVersion = newestVersion();//Call function to get the newest version 
    lastUsedVersion = fncGetLastUsedVersion();//Run function to get last used version 

    if (lastUsedVersion !== newestVersion) { 
    //Display message 

    //Save new value of Last Used Version to User or Document Properties 

    } 
} 

function lastUsedVersion() { 
    //Get last used version from User or Document Properties 

} 
1

Hier ist ein Weg, dies zu tun, kann dies jedoch komplizierter sein als version- Sandy habe ich es in einem frühen Skript:

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 

 
function onOpen() { 
 
    
 
    var documentProperties = PropertiesService.getDocumentProperties(); 
 
    Utilities.sleep(100) 
 
    var checkOpen = documentProperties.getProperty('checkOpenStatus'); 
 
    Utilities.sleep(100) 
 

 
    
 
    if(checkOpen == "true") { 
 

 
    } 
 
    else { 
 
    newfeature(); 
 
    } 
 
    }; 
 

 
    
 
    function newfeature() { 
 
    var doc = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var app = UiApp.createApplication().setTitle('New feature'); 
 
    var panel = app.createVerticalPanel(); 
 
     
 
    // add the html panel 
 
    app.add(app.createHTML("<b>New features</b><br><br><b>1.</b>New feature text")); 
 
    
 
     // adds checkbox 
 
    var cBox = app.createCheckBox("Do Not show this on Load").setName("chk1").setId("chk1"); 
 
    
 
    // set check box stuff 
 
    var cBoxClick = app.createServerClickHandler('checked'); 
 
    cBoxClick.addCallbackElement(cBox); 
 
    cBox.addClickHandler(cBoxClick); 
 
    app.add(cBox); 
 
    app.add(panel); 
 
    doc.show(app); 
 
    return app; 
 
    
 
    } 
 

 
    function checked(e) { 
 
    var app = UiApp.getActiveApplication(); 
 
    
 
    if (e.parameter.chk1 == "true") 
 
    { 
 
    var documentProperties = PropertiesService.getDocumentProperties(); 
 
    Utilities.sleep(100) 
 
    documentProperties.setProperty('checkOpenStatus', 'true'); 
 
    } 
 
    else 
 
    { 
 
    var documentProperties = PropertiesService.getDocumentProperties(); 
 
    Utilities.sleep(100) 
 
    documentProperties.setProperty('checkOpenStatus', 'false'); 
 
    } 
 
    return app; 
 
    } 
 

 

Verwandte Themen