我在google app脚本中有一个小功能,必须在for循环中做一些事情,即我有3行,并带有一些值,每行我必须更新一个工作表,但不幸的是,我不明白为什么,但是之后仅一个循环,程序就停止了!而且没有return
语句。
这是代码:
function movimentiRicorrenti(){
tempoInizioScript = new Date();
var rigaInizio = 2
Logger.log("Data e ora script movimenti ricorrenti: " + Utilities.formatDate(new Date(), "GMT+0200", "dd/MM/yyyy HH:mm"))
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ricorrenti")
var ultimaRiga = sheet.getLastRow(); // ultima riga con i dati
Logger.log("ultima riga " +ultimaRiga);
var dataMovimento = Utilities.formatDate(new Date(), "GMT+0200", "dd/MM/yyyy");
var dataRangeMovimento;
var datiMovimento;
var today = new Date();
//---------- parte dalla prima riga fino all'ultima del foglio, verifica che il movimento non sia scaduto, verifica se in data odierna andrà eseguito ed esegue eventualmente l'update
for (i=rigaInizio; i<=ultimaRiga; i++){
dataRangeMovimento = sheet.getRange(i, 1, 1, 9)
datiMovimento = dataRangeMovimento.getValues();
Logger.log(convertiMovR(datiMovimento[0][0],datiMovimento[0][1],datiMovimento[0][2],datiMovimento[0][3],datiMovimento[0][4],datiMovimento[0][5],datiMovimento[0][6],datiMovimento[0][7],datiMovimento[0][8]));
}
}
其他2个功能
function convertiMovR(cr, cat, conto, importo, ricorrenza, giornoM, giornoS, giornoA, scadenza){
today = new Date();
if (typeof importo != "number"){
return false;
}
if (scadenza >= today){
if (ricorrenza == "mensile" && today.getDate() == giornoM){
aggiornaBil(cr,cat,conto,importo,"movimento ricorrente ogni mese il giorno " + giornoM);
return true;
}
if (ricorrenza == "annuale"){
if (today.getMonth()+1 == giornoA.getMonth()+1 && today.getDate() == giornoA.getDate() + 1 && today.getYear() == giornoA.getYear()){
aggiornaBil(cr,cat,conto,importo,"movimento ricorrente ogni anno il giorno "+ Utilities.formatDate(new Date(giornoA), "GMT+0200", "dd/MM/yyyy"));
return true;
}
}
if (ricorrenza == "giornaliera"){
aggiornaBil(cr,cat,conto,importo,"movimento ricorrente giornaliero");
return true;
}
if (ricorrenza == "settimanale"){
var giornoSett = 7;
switch(giornoS) {
case "domenica":
giornoSett = 0;
break;
case "lunedì":
giornoSett = 1;
break;
case "martedì":
giornoSett = 2;
break;
case "mercoledì":
giornoSett = 3;
break;
case "giovedì":
giornoSett = 4;
break;
case "venerdì":
giornoSett = 5;
break;
case "sabato":
giornoSett = 6;
break;
}
if (giornoSett == 7){
var corpo = "Verificare il movimento ricorrente alla riga " + i + " inserire un giorno della settimana dal lunedì alla domenica";
MailApp.sendEmail("[email protected]", "Errore movimenti ricorrenti", corpo, {name: "Bilancio Gianluca", htmlBody: corpo})
Logger.log("Script movimenti ricorrenti eseguito in data/ora " + Utilities.formatDate(new Date(), "GMT+0200", "dd/MM/yyyy hh:mm") + " con errori! Mail inviata a [email protected]")
}
if (new Date().getDay() == giornoSett){
var nScript = sheet.getRange(i, 10).getValue();
nScript = nScript + 1;
sheet.getRange(i, 10).setValue(nScript);
aggiornaBil(cr,cat,conto,importo,"movimento ricorrente ogni settimana di " + giornoS);
return true;
}
}
}
}
function aggiornaBil(CostoRicavo, Categoria, Conto, Importo, Descrizione){
var dataMovimento = Utilities.formatDate(new Date(), "GMT+0200", "dd/MM/yyyy");
if (CostoRicavo == "costo"){
var rigaAgg = rigaAggiornamentoCosti(Conto);
if (rigaAgg == 0){
var corpo = "Il movimento inserito in data <b>" +
Utilities.formatDate(new Date(), "GMT+0200", "dd/MM/yyyy")+
"</b> relativo a <b>" + Conto +
"</b> non ha corrispondenze in bilancio. Si prega di controllare il foglio di lavoro. Log di sistema:" + Logger.getLog() ;
MailApp.sendEmail("[email protected]", "Errore corrispondenza in bilancio", corpo, {name: "Bilancio Gianluca", htmlBody: corpo})
// uscita dalla sub
Logger.log("Conto non corrispondente!! Mail inviata a [email protected]")
return;
}
var foglioBilancio = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("bilancio")
var rangeDaAggiornare = foglioBilancio.getRange(rigaAgg, colonnaCostiBilancio + 1)
var importoDaAggiornare = rangeDaAggiornare.getValue();
var importoAggiornato = importoDaAggiornare + Importo;
Logger.log("Importo da aggiornare:" + cambiaSeparatore(importoDaAggiornare) + " - Importo aggiornato: " + cambiaSeparatore(arrotondaEuro(importoAggiornato)));
rangeDaAggiornare.setValue(importoAggiornato);
}
if (CostoRicavo == "ricavo"){
var rigaAgg = rigaAggiornamentoRicavi(Conto);
if (rigaAgg == 0){
var corpo = "Il movimento inserito in data <b>" +
Utilities.formatDate(new Date(dataMovimento), "GMT+0200", "dd/MM/yyyy")+
"</b> relativo a <b>" + Conto +
"</b> non ha corrispondenze in bilancio. Si prega di controllare il foglio di lavoro. Log di sistema:" + Logger.getLog() ;
MailApp.sendEmail("[email protected]", "Errore corrispondenza in bilancio", corpo, {name: "Bilancio Gianluca", htmlBody: corpo})
// uscita dalla sub
Logger.log("Conto non corrispondente!! Mail inviata a [email protected]")
return;
}
var foglioBilancio = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("bilancio")
var rangeDaAggiornare = foglioBilancio.getRange(rigaAgg, colonnaRicaviBilancio + 1)
var importoDaAggiornare = rangeDaAggiornare.getValue();
var importoAggiornato = importoDaAggiornare + Importo;
Logger.log("Importo da aggiornare:" + cambiaSeparatore(importoDaAggiornare) + " - Importo aggiornato: " + cambiaSeparatore(arrotondaEuro(importoAggiornato)));
rangeDaAggiornare.setValue(importoAggiornato);
}
var arrayMovimento = [[dataMovimento, CostoRicavo, Categoria, Conto, cambiaSeparatore(Importo), Descrizione]]
Logger.log(arrayMovimento);
var foglioMovimenti = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("movimenti")
foglioMovimenti.insertRowAfter(1);
foglioMovimenti.getRange(2, 1, 1, 6).setValues(arrayMovimento);
foglioMovimenti.getRange(3,8,1,1).copyTo(foglioMovimenti.getRange(2,8,1,1))
foglioBilancio = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("verifica")
rangeDaAggiornare = foglioBilancio.getRange(1, 5)
importoDaAggiornare = rangeDaAggiornare.getValue();
importoAggiornato = importoDaAggiornare + Importo;
rangeDaAggiornare.setValue(importoAggiornato);
Logger.log("Aggiornamento completato!");
}
log:
[20-02-17 23:07:22:486 CET] Data e ora script movimenti ricorrenti: 18/02/2020 00:07
[20-02-17 23:07:22:757 CET] ultima riga 4
[20-02-17 23:07:23:206 CET] cellulare riga n. 63
[20-02-17 23:07:23:211 CET] Importo da aggiornare:-29 - Importo aggiornato: -31
[20-02-17 23:07:23:212 CET] [[18/02/2020, costo, comunicazioni, cellulare, -2, movimento ricorrente ogni anno il giorno 17/02/2020]]
[20-02-17 23:07:24:067 CET] Aggiornamento completato!
[20-02-17 23:07:24:067 CET] true
并且已停止..但还有其他两行..
放置Logger.log(“ r:%s,u%s,%s”,rigaInizio,ultimaRiga,“之前/之后”)convertiMovR之后的结果
Logger.log("r:%s,u%s,%s",rigaInizio,ultimaRiga,"before")
Logger.log(convertiMovR(datiMovimento[0][0],datiMovimento[0][1],datiMovimento[0][2],datiMovimento[0][3],datiMovimento[0][4],datiMovimento[0][5],datiMovimento[0][6],datiMovimento[0][7],datiMovimento[0][8]));
Logger.log("r:%s,u%s,%s",rigaInizio,ultimaRiga,"after")
[[20-02-17 23:18:41:155 PST]数据或脚本活动信息:18/02/2020 09:18
[[20-02-17 23:18:41:422 PST]最终版本4
[[20-02-17 23:18:41:580 PST] r:2.0,u4.0,之前
[[20-02-17 23:18:41:858 PST]蜂窝网。 63
[[20-02-17 23:18:41:863 PST] Importo da aggiornare:-31-Importo aggiornato:-33
[[20-02-17 23:18:41:865 PST] [[18/02/2020,costo,comunicazioni,celle,-2,movimento ricorrente ogni anil il giorno 17/02/2020]]]
[[20-02-17 23:18:42:537 PST] Aggiornamento completato!
[[20-02-17 23:18:42:538 PST]是]
[[20-02-17 23:18:42:538 PST] r:2.0,u4.0,之后
但是..也许我已经理解了... for ..下一个循环不等待convertiMovR完成
我尝试放
Logger.log("value of i before call convertiMovR " + i) Logger.log("r:%s,u%s,%s",rigaInizio,ultimaRiga,"before") Logger.log(convertiMovR(datiMovimento[0][0],datiMovimento[0][1],datiMovimento[0][2],datiMovimento[0][3],datiMovimento[0][4],datiMovimento[0][5],datiMovimento[0][6],datiMovimento[0][7],datiMovimento[0][8])); Logger.log("r:%s,u%s,%s",rigaInizio,ultimaRiga,"after") Logger.log("value of i after call convertiMovR " + i)
结果是
[20-02-18 08:39:32:396 CET] Data e ora script movimenti ricorrenti: 18/02/2020 09:39 [20-02-18 08:39:32:678 CET] ultima riga 4 [20-02-18 08:39:32:807 CET] value of i before call convertiMovR 2 [20-02-18 08:39:32:808 CET] r:2.0,u4.0,before [20-02-18 08:39:33:057 CET] cellulare riga n. 63 [20-02-18 08:39:33:061 CET] Importo da aggiornare:-41 - Importo aggiornato: -43 [20-02-18 08:39:33:062 CET] [[18/02/2020, costo, comunicazioni, cellulare, -2, movimento ricorrente ogni anno il giorno 17/02/2020]] [20-02-18 08:39:33:706 CET] Aggiornamento completato! [20-02-18 08:39:33:707 CET] true [20-02-18 08:39:33:707 CET] r:2.0,u4.0,after [20-02-18 08:39:33:708 CET] value of i after call convertiMovR 60
我想我必须用其他循环来更改for ..下一步,也许做..循环,或者有任何语句可以'等待'convertiMovR的执行? ..
成绩单
[20-02-17 23:39:32:386 PST] Avvio dell'esecuzione
[20-02-17 23:39:32:395 PST] Utilities.formatDate([Mon Feb 17 23:39:32 PST 2020, GMT+0200, dd/MM/yyyy HH:mm]) [0 secondi]
[20-02-17 23:39:32:396 PST] Logger.log([Data e ora script movimenti ricorrenti: 18/02/2020 09:39, []]) [0 secondi]
[20-02-17 23:39:32:398 PST] SpreadsheetApp.getActiveSpreadsheet() [0 secondi]
[20-02-17 23:39:32:573 PST] SpreadsheetApp.Spreadsheet.getSheetByName([ricorrenti]) [0,175 secondi]
[20-02-17 23:39:32:678 PST] SpreadsheetApp.Sheet.getLastRow() [0,103 secondi]
[20-02-17 23:39:32:679 PST] Logger.log([ultima riga 4, []]) [0 secondi]
[20-02-17 23:39:32:679 PST] Utilities.formatDate([Mon Feb 17 23:39:32 PST 2020, GMT+0200, dd/MM/yyyy]) [0 secondi]
[20-02-17 23:39:32:680 PST] SpreadsheetApp.Sheet.getRange([2, 1, 1, 9]) [0 secondi]
[20-02-17 23:39:32:807 PST] SpreadsheetApp.Range.getValues() [0,127 secondi]
[20-02-17 23:39:32:808 PST] Logger.log([value of i before call convertiMovR 2, []]) [0 secondi]
[20-02-17 23:39:32:808 PST] Logger.log([r:%s,u%s,%s, [2.0, 4.0, before]]) [0 secondi]
[20-02-17 23:39:32:808 PST] Utilities.formatDate([Sun Feb 16 15:00:00 PST 2020, GMT+0200, dd/MM/yyyy]) [0 secondi]
[20-02-17 23:39:32:809 PST] Utilities.formatDate([Mon Feb 17 23:39:32 PST 2020, GMT+0200, dd/MM/yyyy]) [0 secondi]
[20-02-17 23:39:32:809 PST] SpreadsheetApp.getActiveSpreadsheet() [0 secondi]
[20-02-17 23:39:32:810 PST] SpreadsheetApp.Spreadsheet.getSheetByName([bilancio]) [0 secondi]
[20-02-17 23:39:32:910 PST] SpreadsheetApp.Sheet.getLastRow() [0,1 secondi]
[20-02-17 23:39:32:911 PST] SpreadsheetApp.Sheet.getRange([3, 1, 130, 1]) [0 secondi]
[20-02-17 23:39:33:056 PST] SpreadsheetApp.Range.getValues() [0,145 secondi]
[20-02-17 23:39:33:058 PST] Logger.log([cellulare riga n. 63, []]) [0 secondi]
[20-02-17 23:39:33:059 PST] SpreadsheetApp.getActiveSpreadsheet() [0 secondi]
[20-02-17 23:39:33:059 PST] SpreadsheetApp.Spreadsheet.getSheetByName([bilancio]) [0 secondi]
[20-02-17 23:39:33:060 PST] SpreadsheetApp.Sheet.getRange([63, 2]) [0 secondi]
[20-02-17 23:39:33:060 PST] SpreadsheetApp.Range.getValue() [0 secondi]
[20-02-17 23:39:33:062 PST] Logger.log([Importo da aggiornare:-41 - Importo aggiornato: -43, []]) [0 secondi]
[20-02-17 23:39:33:062 PST] SpreadsheetApp.Range.setValue([-43.0]) [0 secondi]
[20-02-17 23:39:33:063 PST] Logger.log([[[18/02/2020, costo, comunicazioni, cellulare, -2, movimento ricorrente ogni anno il giorno 17/02/2020]], []]) [0 secondi]
[20-02-17 23:39:33:064 PST] SpreadsheetApp.getActiveSpreadsheet() [0 secondi]
[20-02-17 23:39:33:064 PST] SpreadsheetApp.Spreadsheet.getSheetByName([movimenti]) [0 secondi]
[20-02-17 23:39:33:225 PST] SpreadsheetApp.Sheet.insertRowAfter([1]) [0,16 secondi]
[20-02-17 23:39:33:226 PST] SpreadsheetApp.Sheet.getRange([2, 1, 1, 6]) [0 secondi]
[20-02-17 23:39:33:431 PST] SpreadsheetApp.Range.setValues([[[18/02/2020, costo, comunicazioni, cellulare, -2, movimento ricorrente ogni anno il giorno 17/02/2020]]]) [0,205 secondi]
[20-02-17 23:39:33:432 PST] SpreadsheetApp.Sheet.getRange([3, 8, 1, 1]) [0 secondi]
[20-02-17 23:39:33:432 PST] SpreadsheetApp.Sheet.getRange([2, 8, 1, 1]) [0 secondi]
[20-02-17 23:39:33:433 PST] SpreadsheetApp.Range.copyTo([Range]) [0 secondi]
[20-02-17 23:39:33:433 PST] SpreadsheetApp.getActiveSpreadsheet() [0 secondi]
[20-02-17 23:39:33:434 PST] SpreadsheetApp.Spreadsheet.getSheetByName([verifica]) [0 secondi]
[20-02-17 23:39:33:434 PST] SpreadsheetApp.Sheet.getRange([1, 5]) [0 secondi]
[20-02-17 23:39:33:705 PST] SpreadsheetApp.Range.getValue() [0,27 secondi]
[20-02-17 23:39:33:706 PST] SpreadsheetApp.Range.setValue([-41.0]) [0 secondi]
[20-02-17 23:39:33:707 PST] Logger.log([Aggiornamento completato!, []]) [0 secondi]
[20-02-17 23:39:33:707 PST] Logger.log([true, []]) [0 secondi]
[20-02-17 23:39:33:708 PST] Logger.log([r:%s,u%s,%s, [2.0, 4.0, after]]) [0 secondi]
[20-02-17 23:39:33:709 PST] Logger.log([value of i after call convertiMovR 60, []]) [0 secondi]
[20-02-17 23:39:33:994 PST] Esecuzione riuscita [1,315 secondi di esecuzione totale]
我在google app脚本中有一个小功能,必须在for循环中做一些事情,即我有3行带有一些值,并且每行我必须更新一个工作表,但是不幸的是我没有...] >
i
。