Exporter du texte avec virgule dans un csv (script)

Community Beginner ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

Bonjour,

J'ai écris un script qui fait un csv avec certaines métédonnées des fichiers d'un dossier. Ca fontionne sauf quand le texte récupéré d'un champ comporte des virgules, car chaque virgule va être interpêtée comme un séparateur et va créer une colonne supplémentaire dans le csv.
Comment puis-je récupérer le texte avec virgules sans créer de colonne supplémentaire, pour qu'il reste donc dans une seule cellule ?
Puis-je "forcer" le csv à utiliser un autre séparateur ?...
Et j'ai besoin du format csv, sinon le problème serait réglé avec le format .txt...

Merci par avancce de vos informations.

TOPICS
Scripting

Views

101

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 2 Correct answers

Advocate , Apr 20, 2022 Apr 20, 2022
Utilise des " " pour isoler le texte contenant des virgule. "Musée des Beaux-Arts, le Nouveau-né de Georges de la Tour.", Colonne2, Colonne3 Musée d'Orsay, Colonne2, Colonne3

Likes

Translate

Translate
Adobe Community Professional , Apr 20, 2022 Apr 20, 2022
I see, then yes, just write to the cell as:  f.write('"' + title + '"');

Likes

Translate

Translate
Adobe Community Professional ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

If the value you are writing has a comma in it, you should use " around the value. I think most CSV readers will treat something like "cell1,stuff" as a single cell. 

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

Si je comprends bien :
Je récupéres 2 champs de matadonnées (Titre et Copyright), et chacune avec une variable. Pour chaque variable je pourrai utiliser une regex de type .replace() pour insérer des guillements autour des virgules.
A essayer, je n'ai pas le temps tout de suite mais dès que je peux je teste 🙂

 

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

If you are combining Title and Copyright into one cell, separated by a comma, you would write the value as "Title, Copyright"

 

So, essentially: '"' + title + ", " + copyright + '"'; 

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

Merci pour cette info. En fait je n'ai pas besoin de regrouper ces 2 éléments dans une seule cellule.
Ils doivent chacun rester dans une cellule, mais le problème vient que parfois ces textes contiennt des virgules.
Par exemple, le texte du champs de la métadonnée "Title" peut contenir ceci : "Musée des Beaux-Arts, le Nouveau-né de Georges de la Tour."
--> Et une fois dans le csv cette virgule va créée une colonne supplémentaire...

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

Mais je dois faire face à un nouveau problème 🙂 :-)...
Comme je travaille sur 2 postes, le script ne récupère plus les métadonnées sur celui-ci...
Cela marchait pourtant sur l'autre ordinateur : 

// (...)
var myFiles = myAllFilesList; //(myAllFiles = myFolder.getFiles(); )
for (var i=0; i<myFiles.length; i++) {

var myF = myFiles[i];
if (myF instanceof File ) {

xmpFile = new XMPFile(myF.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_READ);
var myXmp = xmpFile.getXMP();
xmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
var myT = myXmp.getProperty(XMPConst.NS_DC, "title[1]");

// (...)

Il faut être patient et obstiné 🙂 🙂 :-)...

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

Utilise des " " pour isoler le texte contenant des virgule.

"Musée des Beaux-Arts, le Nouveau-né de Georges de la Tour.", Colonne2, Colonne3
Musée d'Orsay, Colonne2, Colonne3

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

I see, then yes, just write to the cell as: 

f.write('"' + title + '"');

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Apr 20, 2022 Apr 20, 2022

Copy link to clipboard

Copied

LATEST

Merci bien !  En effet les doubles guillemets fonctionnent, tant sous InDesign que Bridge.
Le csv créé (ici sous la variable "C") va récupérer le contenu de "texts" :
C.write(texts);
// --> Et voici ce que contient "texts"  - à l'intérieur d'une boucle :
(...) { texts += decodeURI (myF.name)+";"+decodeURI (myF.parent.name)+";"+""+myT+""+";"+""+myR+""+"\r" };
// --> Il faut également dédoubler les opérateurs "+"avec les délimiteurs pour que cela fonctionne : ...+";"+""+myT+""+";"+""+myR+""+"\r"...

(Les variables myT et myR ramènent 2 champs de métadonnées du fichier).

Likes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines