私はこのような状況にあります。数か月前にスクリプトを作成しましたが、これはまだ Google サイトで実行されています。doGet 関数は次のとおりです。
function doGet(e) {
var myapp = UiApp.createApplication();
var mygrid = myapp.createGrid(5, 2);
var listboxAssociazione=myapp.createListBox().setId("listboxAssociazione").setName("listboxAssociazione");
var labelAssociazione=myapp.createLabel("Associazione").setId("Associazione");
var listboxMeseFatturato=myapp.createListBox().setId("listboxMeseFatturato").setName("listboxMeseFatturato");
var labelMeseFatturato=myapp.createLabel("Mese da fatturare").setId("Mese da fatturare");
var listboxAnnoFatturato=myapp.createListBox().setId("listboxAnnoFatturato").setName("listboxAnnoFatturato");
var labelAnnoFatturato=myapp.createLabel("Anno").setId("Anno");
var buttonCalcola=myapp.createButton().setText("Calcola").setId("CalcolaFattura");
var labelLavoroInCorso=myapp.createLabel("").setId("labelLavoroInCorso").setStyleAttribute('color', 'blue');
mygrid.setWidget(0, 0,labelAssociazione);
mygrid.setWidget(0, 1, listboxAssociazione);
mygrid.setWidget(1, 0, labelMeseFatturato);
mygrid.setWidget(1, 1, listboxMeseFatturato);
mygrid.setWidget(2, 0, labelAnnoFatturato);
mygrid.setWidget(2, 1, listboxAnnoFatturato);
mygrid.setWidget(3, 1, buttonCalcola);
mygrid.setWidget(4, 1, labelLavoroInCorso);
var p=DocsList.getFolders();
var totcartelle = p.length;
var trovato= false;
var cartellaAssociazioni;
for(var j=0;j<totcartelle && trovato==false;j++){
var prova=p[j].getId();
if(p[j].getId()=="0B-H4Ioaio5w5YTg3MGFkOWQtMzYzNy00ZTFhLWEzY2YtZTVlNzIwYWJhMmJm"){
trovato=true;
cartellaAssociazioni=p[j];
}
}
var cartelle =cartellaAssociazioni.getFolders();
var lunghezza = cartelle.length;
for(var i = 0; i < lunghezza; i++) //these arrays are zero based it looks like
{ var prova=cartelle[i].getName();
listboxAssociazione.addItem(prova);
}
//Aggiunta dei mesi alla listbox
listboxMeseFatturato.addItem("Gennaio");
listboxMeseFatturato.addItem("Febbraio");
listboxMeseFatturato.addItem("Marzo");
listboxMeseFatturato.addItem("Aprile");
listboxMeseFatturato.addItem("Maggio");
listboxMeseFatturato.addItem("Giugno");
listboxMeseFatturato.addItem("Luglio");
listboxMeseFatturato.addItem("Agosto");
listboxMeseFatturato.addItem("Settembre");
listboxMeseFatturato.addItem("Ottobre");
listboxMeseFatturato.addItem("Novembre");
listboxMeseFatturato.addItem("Dicembre");
//Aggiunta dell'anno di fatturazione
var d= new Date();
var annoAttuale=parseInt(d.getFullYear());
listboxAnnoFatturato.addItem(""+annoAttuale);
listboxAnnoFatturato.addItem(""+(annoAttuale-1));
var formpanel=myapp.createFormPanel().setId("form");
var serverClickHandler = myapp.createServerClickHandler('GeneraFattura');
serverClickHandler.addCallbackElement(formpanel);
buttonCalcola.addClickHandler(serverClickHandler);
var serverClickHandlerStatus = myapp.createServerClickHandler('ChangeStatus');
serverClickHandlerStatus.addCallbackElement(formpanel);
buttonCalcola.addClickHandler(serverClickHandlerStatus);
formpanel.add(mygrid);
myapp.add(formpanel);
return myapp;
}
//Function to disable the button to avoid double click
function ChangeStatus(e){
var app = UiApp.getActiveApplication();
app.getElementById("labelLavoroInCorso").setText("Attendere! Calcolo della richiesta di pagamento in corso...");
app.getElementById("CalcolaFattura").setEnabled(false);
return app;
}
今私の問題は、サイトの「Calcola」ボタンをクリックすると、関数「GeneraFattura」が1回ではなくランダムな回数実行されるように見えることです。
私が指定した同じ3つのパラメーターを使用して、Googleサイトのスクリプトエディターから同じ関数を実行すると
var valoreAssociazione = "Volley";
var valoreMese="May";
var valoreAnno = "2012";
上記のフォームの代わりに、正しく機能します。
正しく動作すると言うとき、関数「GeneraFattura」には、スプレッドシートをコピーする行が1行しかないことを意味します。スクリプト エディターからスクリプトを実行すると、スプレッドシートの 1 つのコピーが出力されます。サイトからスクリプトを実行すると、スプレッドシートの 5 6 のコピーが得られます。
どこに問題があると思いますか??Google サイトのスクリプト エディターの実行と、Google サイトに埋め込まれたスクリプトの実行で動作が異なるのはなぜですか??
前もって感謝します