[Script] Si colonne contient 0 alors supprimer ligne

Bonjour,

J aimerais avec un script dans un fichier externe au fichier C supprimer toutes les lignes completes si dans la colonne B j ai des cellules avec la valeur 0.

Je voudrais passer par le nom du fichier et non pas l id.

C'est un fichier GS et non xlsx. juste qu en sauvegardant ca s est mis dans ce format.

Merci
Jack

8c.xlsx (8.44 Ko)

bonsoir,

Ayez la gentillesse de suivre les consignes que l’on vous fournis

https://www.sheets-pratique.com/fr/cours/partage

Les fichiers avec extension xls et xlsx prennent de la place (et beaucoup) sur le Drive

Il est désagréable de faire le ménage

C’est aussi facile que de sauvegarder avec les extensions Microsoft

sinon pour nous faire visionner le code GS sur le forum il faut copier /coller le code et le mettre dans </>

Bonjour,

Je voudrais dans la colonne C si une cellule contient 0 effacer la ligne complete.

Avec un script svp

Jack

Bonjour,

essaie ceci

function deleteZeros() {
  const sh = SpreadsheetApp.getActiveSheet();
  const data = sh.getDataRange().getValues();
  const empty_rows = [];
  data.forEach(function(r,i){
    if (r[2]==0) empty_rows.push(+i+1);
  })  
  empty_rows.reverse().forEach(x => sh.deleteRow(x));
}

Merci ca marche.

Par script, je voudrais 3 choses:

- Garder le fichier C original avec le meme nom.

- Faire une copie du fichier C modifie apres le script en le renomant dans le meme repertoire.

- Supprimer le fichier C avec la ligne,

var source = SpreadsheetApp.openById(getFileId("C"));

Merci

Jack

et quel est l'intérêt ?

Pour garder un fichier original avoir une copie moddifie et supprimer quand jai fini.

Peux tu m'aider?

Merci
Jack

tu ne peux pas d'abord le modifier, le copier et conserver l'original car ce dernier a déjà été modifié

il faut faire l'inverse, faire une copie qui devient la version n-1 que tu peux dater, et ensuite modifier l'original

y a t'il un dossier particulier où tu veux le copier ?

function test(){
  archiverFichier('C','yourFolderName')
}
function archiverFichier(fileName,folderName) {
  var d = Utilities.formatDate(new Date(), "GMT+1", "yyyy-MM-dd HH:mm")
  var destFolder = DriveApp.getFolderById(getFolderId(folderName)); 
  DriveApp.getFileById(getFileId(fileName)).makeCopy(fileName+' copie du '+d, destFolder).getId();
}
function getFolderId(name){
  var id;
  var dossiers = DriveApp.getFoldersByName(name);
  if (dossiers.hasNext()) {
    var dossier = dossiers.next();
    id = dossier.getId(); }
  else {
    var dossier = DriveApp.createFolder(name);
    id = dossier.getId();
  }
  return id;
}
function getFileId(name) {
  var files = DriveApp.getFilesByName(name);
  while (files.hasNext()) {
    var file = files.next();
    return (file.getId())
  }
}

Un complément ... si tu veux ne pas changer le nom mais éviter de mélanger le tout, tu peux recopier avec le même nom et changer le nom de la feuille sur laquelle tu travailles

function renommer() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  ss.setName('brouillon')
}

mais encore une fois, contrairement à excel, le travail se fait en ligne et tout est enregistré, donc quand tu travailles sur le fichier, il est réellement modifié et enregistré, c'est pour cela qu'il faut en faire une copie auparavant

ou bien, faire une copie, fermer le fichier, aller chercher la copie pour y travailler

Je comprend.

J'ai teste ca marche les 2 scripts. Merci. Si je ne veux pas changer le nom du fichier C lors de l'enregistrement dans le dossier je fait comment?

Comment faire pour pouvoir copier le fichier C du dossier vers la racine de google drive? Mais avant supprimer le fichier C moddifie de la racine.

Jack

J'ai teste ca marche les 2 scripts. Merci. Si je ne veux pas changer le nom du fichier C lors de l'enregistrement dans le dossier je fait comment?

Comment faire pour pouvoir copier le fichier C du dossier vers la racine de google drive?

pour copier vers la racine et ne pas changer de nom

function test() {
  archiverFichier('big formula')
}
function archiverFichier(fileName) {
  DriveApp.getFileById(getFileId(fileName)).makeCopy(fileName).getId();
}
function getFileId(name) {
  var files = DriveApp.getFilesByName(name);
  while (files.hasNext()) {
    var file = files.next();
    return (file.getId())
  }
}

Mais avant supprimer le fichier C moddifie de la racine.

je n'ai pas compris

1- je voudrais copier le fichier C de la racine google drive vers le dossier SAVE sans changer son nom.

2- je voudrais supprimer le fichier C de la racine et copier le fichier C de SAVE vers la racine.

(c'est juste pour remettre le fichier C original de SAVE vers la racine drive.)

Peux tu me le faire en script stp

Jack

Pour le 1 = je sauvegarde le fichier sans changer de nom sous le répertoire SAVE

function test(){
  sauvegarderFichier('C','SAVE')
}
function sauvegarderFichier(fileName,folderName) {
  var id =getFileId(fileName)
  PropertiesService.getUserProperties().setProperties({'id': id} , true);
  var destFolder = DriveApp.getFolderById(getFolderId(folderName));  
  DriveApp.getFileById(getFileId(fileName)).makeCopy(fileName, destFolder).getId();
}
function getFolderId(name){
  var id;
  var dossiers = DriveApp.getFoldersByName(name);
  if (dossiers.hasNext()) {
    var dossier = dossiers.next();
    id = dossier.getId(); }
  else {
    var dossier = DriveApp.createFolder(name);
    id = dossier.getId();
  }
  return id;
}
function getFileId(name) {
  var files = DriveApp.getFilesByName(name);
  while (files.hasNext()) {
    var file = files.next();
    return (file.getId())
  }
}

pour le 2 je regarde, là où c'est complexe c'est que tu souhaites travailler avec les noms de fichier et pas les id, et comme il a été sauvegardé sous le même nom, il ne faudra pas effacer le bon

je conserve donc l'id du fichier que tu vas modifier par

PropertiesService.getUserProperties().setProperties({'id': id} , true);

je ne peux pas supprimer un fichier par un script

Scripted file deletion is a dangerous operation, considering that scripts are shared and some of them are malicious. So Google decided to limit the possible damage in this way, by not allowing outright deletion

mais je peux le renommer et mettre 'C - à supprimer'

en reprenant l'id sauvegardé (il faut alors que le premier script ait bien tourné)

function renommer() {
  var id = PropertiesService.getUserProperties().getProperty('id');
  var ss = SpreadsheetApp.openById(id)
  ss.setName(ss.getName()+' - obsolète')
}

pour déplacer le fichier C qui a été sauvegardé vers la racine de ton drive

DriveApp.getFileById(getFileId('C')).moveTo(DriveApp.getFolderById(getFolderId('My Drive')))

en cumulant avec le script précédent pour faire l'étape 2

function renommerEtReprendreC() {
  var id = PropertiesService.getUserProperties().getProperty('id');
  var ss = SpreadsheetApp.openById(id)
  ss.setName(ss.getName()+' - obsolète')
DriveApp.getFileById(getFileId('C')).moveTo(DriveApp.getFolderById(getFolderId('My Drive')))
}

merci beaucoup.

si je veux ouvrir le fichier C dans le répertoire SAVE.

quel serais le script?

Jack

Rechercher des sujets similaires à "script colonne contient supprimer ligne"