I have a code which copies row if condition. By the source sheet is around 8 000 lines and the script fails because is too long.
How can I speed it up?
I would like it takes one 1 hr max.
I think it makes too many calls to Google. I hope we can reduce them.
function dispacthtosheets() {
var sSheet = SpreadsheetApp.openById('xxxxxx');
var srcSheet = sSheet.getSheetByName ( "Dispatch" );
var lastRow = srcSheet.getLastRow ();***emphasized text***
for ( var i = 1 ; i <= lastRow ; i ++ ) {
var cellule = srcSheet.getRange ( "L" + i );
var val = cellule.getValue();
if ( val == "Changement ENT" ) {
var tarSheet3 = sSheet.getSheetByName ( "Changement ENT" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow3 = tarSheet3.getLastRow ();
var tarRange3 = tarSheet3.getRange ( "C" + tarRow3 + ":R" + tarRow3);
srcRange.copyTo (tarRange3);
tarSheet3.insertRowAfter ( tarRow3 );
} if ( val == "VC en REL" ) {
var tarSheet1 = sSheet.getSheetByName ( "VC en REL" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow1 = tarSheet1.getLastRow ();
var tarRange1 = tarSheet1.getRange ( "C" + tarRow1 + ":R" + tarRow1);
srcRange.copyTo (tarRange1);
tarSheet1.insertRowAfter ( tarRow1 );
} if ( val == "Solo à étudier" ) {
var tarSheet2 = sSheet.getSheetByName ( "Solo à étudier" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow2 = tarSheet2.getLastRow ();
var tarRange2 = tarSheet2.getRange ( "C" + tarRow2 + ":R" + tarRow2);
srcRange.copyTo (tarRange2);
tarSheet2.insertRowAfter ( tarRow2 );
} if ( val == "VC + 6 mois" ) {
var tarSheet4 = sSheet.getSheetByName ( "VC + 6 mois" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow4 = tarSheet4.getLastRow ();
var tarRange4 = tarSheet4.getRange ( "C" + tarRow4 + ":R" + tarRow4);
srcRange.copyTo (tarRange4);
tarSheet4.insertRowAfter ( tarRow4);
} if ( val == "Sortie Nat" ) {
var tarSheet5 = sSheet.getSheetByName ( "Sortie Nat" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow5 = tarSheet5.getLastRow ();
var tarRange5 = tarSheet5.getRange ( "C" + tarRow5 + ":R" + tarRow5);
srcRange.copyTo (tarRange5);
tarSheet5.insertRowAfter ( tarRow5 );
} if ( val == "ZCTM" ) {
var tarSheet6 = sSheet.getSheetByName ( "ZCTM" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow6 = tarSheet6.getLastRow ();
var tarRange6 = tarSheet6.getRange ( "C" + tarRow6 + ":R" + tarRow6);
srcRange.copyTo (tarRange6);
tarSheet6.insertRowAfter ( tarRow6 );
} if ( val == "Appro validée" ) {
var tarSheet7 = sSheet.getSheetByName ( "Appro validée" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );;
var tarRow7 = tarSheet7.getLastRow ();
var tarRange7 = tarSheet7.getRange ( "C" + tarRow7 + ":R" + tarRow7);
srcRange.copyTo (tarRange7);
tarSheet7.insertRowAfter ( tarRow7 );
} if ( val == "F943" ) {
var tarSheet8 = sSheet.getSheetByName ( "F943" );
var srcRange = srcSheet.getRange ( "C" + i + ":R" + i );
var tarRow8 = tarSheet8.getLastRow ();
var tarRange8 = tarSheet8.getRange ( "C" + tarRow8 + ":R" +
tarRow8);
srcRange.copyTo (tarRange8);
tarSheet8.insertRowAfter ( tarRow8 );
}
sSheet.toast(' VC dispacthé !', 'Confirmation 📡');
}
};
Archive for a complete sheet at once
function archiver(){
var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var archive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
var data = feuille.getRange('A2:AC'+(feuille.getLastRow()-1)).getValues()
var archiveData = []
var lignes = []
var ligne = 1
try{
data.forEach(function(row){
ligne++
if (row[28]) {
archiveData.push(row)
lignes.push(ligne)
}
})
archive.getRange(archive.getLastRow()+1,1,archiveData.length,archiveData[0].length).setValues(archiveData)
lignes.reverse().forEach(x => feuille.deleteRow(x));
SpreadsheetApp.getActive().toast('Ligne(s) archivée(s) !', 'Fin de script 🗃️')
}catch(e){
SpreadsheetApp.getActive().toast('Rien à archiver !', 'Fin de script 🗃️')
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.