40 votes

Nouvelle limitation de la publication de Google Spreadsheets

Je teste le nouveau Google Spreadsheets car il y a une nouvelle fonctionnalité dont j'ai vraiment besoin : la limite de 200 feuilles a été levée (plus d'infos ici : https://support.google.com/drive/answer/3541068 ).

Cependant, je ne peux pas publier une feuille de calcul en CSV comme dans l'ancienne version. Je vais dans "Fichier>Publier sur le web" et il n'y a plus d'options pour publier "toutes les feuilles" ou certaines feuilles et vous ne pouvez pas spécifier les plages de cellules à publier au format CSV, etc.

Cette limitation n'est pas mentionnée dans la documentation publiée sur les "fonctionnalités non prises en charge", qui se trouve à l'adresse suivante : https://support.google.com/drive/answer/3543688

Existe-t-il un autre moyen d'activer cette fonction ou a-t-elle été abandonnée dans la nouvelle version ?

Mon cas d'utilisation est le suivant : nous récupérons les résultats de Bigquery dans les feuilles de calcul, nous publions les feuilles sous forme de CSV automatiquement en utilisant la fonction "publier automatiquement lors de la mise à jour" qui produit ensuite l'URL du CSV qui est placé dans les outils graphiques qui lisent l'URL du CSV pour générer les visuels.

Quelqu'un sait-il comment faire ?

56voto

s4tori Points 191

Les nouvelles feuilles de calcul Google utilisent un URL différent (il suffit de copier votre <KEY> ):

  • Nouvelle feuille : https://docs.google.com/spreadsheets/d/<KEY>/pubhtml
  • Fichier CSV : https://docs.google.com/spreadsheets/d/<KEY>/export?gid=0&format=csv

/!\ Vous devez partager votre document en utilisant la fonction Toute personne ayant le lien réglage.

25voto

Uriel G. Rojo Points 121

Voici la solution, il suffit de l'écrire comme ceci :

https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv&id=<KEY >

Je sais que c'est bizarre d'écrire la CLÉ deux fois, mais ça marche parfaitement. Un collègue de travail a découvert cela en ouvrant le fichier excel dans Google Docs, puis Fichier -> Télécharger sous -> Valeurs séparées par des virgules. Ensuite, dans la section des téléchargements du navigateur apparaît un lien vers le fichier CSV, comme ceci : https://docs.google.com/spreadsheets/d/<KEY>/export?format=csv&id=<KEY>&gid=<SOME NUMÉRO> Mais cela ne fonctionne pas dans ce format, ce que mon ami a fait est de supprimer "&gid=<SOME NUMBER>" et cela a fonctionné ! J'espère que cela aidera tout le monde.

7voto

Paktas Points 103

Si vous activez l'option "partage de liens avec quiconque" pour les feuilles de calcul, voici une méthode simple pour obtenir l'exportation d'une plage de cellules ou de colonnes (ou ce que vous voulez) au format HTML, CSV, XML, JSON via la requête :

https://docs.google.com/spreadsheet/tq?key=YOUR-KEY&gid=1&tq=select%20A,%20B&tqx=reqId:1;out:html;%20responseHandler:webQuery

L'inconvénient est que votre document est toujours disponible dans son intégralité via le lien public, mais si vous voulez exporter/importer des données vers Excel par exemple, c'est un moyen parfait.

6voto

Jamie G Points 449

Cela ne va pas aider tout le monde, mais j'ai créé un script PHP script pour lire le HTML dans un tableau.

J'ai ajouté la conversion en CSV à la fin. J'espère que cela aidera les personnes qui ont accès à PHP.

$html_link  = "https://docs.google.com/spreadsheets/d/XXXXXXXXXX/pubhtml";
$local_html = "sheets.html";

$file_contents = file_get_contents($html_link);
file_put_contents($local_html,$file_contents);

$dom        = new DOMDocument();  
$html       = @$dom->loadHTMLFile($local_html);  //Added a @ to hide warnings - you might remove this when testing
$dom->preserveWhiteSpace = false;   

$tables     = $dom->getElementsByTagName('table');   
$rows       = $tables->item(0)->getElementsByTagName('tr'); 
$cols       = $rows->item(0)->getElementsByTagName('td');  //You'll need to edit the (0) to reflect the row that your headers are in.

$row_headers = array();
foreach ($cols as $i => $node) {
    if($i > 0 ) $row_headers[] = $node->textContent;
}  

foreach ($rows as $i => $row){   
    if($i == 0 ) continue;
    $cols = $row->getElementsByTagName('td');   
    $row = array();
    foreach ($cols as $j => $node) {
        $row[$row_headers[$j]] = $node->textContent;
    }   
    $table[] = $row;
} 

//Convert to csv
$csv = "";
foreach($table as $row_index => $row_details){
    $comma      = false;
    foreach($row_details as $value){
        $value_quotes = str_replace('"', '""', $value);
        $csv .= ($comma ? "," : "") . ( strpos($value,",")===false ? $value_quotes : '"'.$value_quotes.'"'  );
        $comma = true;
    }
    $csv .= "\r\n";
}

//Save to a file and/or output 
file_put_contents("result.csv",$csv);
print $csv;

2voto

hianalytics Points 61

Voici une autre solution de contournement temporaire, non-PHP :

  1. Accédez à une NOUVELLE feuille Google existante
  2. Allez dans "Fichier -> Nouveau -> Feuille de calcul".
  3. Sous "Fichier -> Publier sur le web..." a maintenant l'option de publier une version csv

Je crois qu'il s'agit en fait de la création d'une ancienne feuille Google, mais pour mes besoins (importation de données google sheet de clients ou de moi-même dans R pour une analyse statistique), cela fonctionne jusqu'à ce qu'ils espèrent mettre à jour cette fonctionnalité.

J'ai également publié ce message dans un forum Google Groups, que vous trouverez ici :

https://productforums.google.com/forum/#!topic/docs/An-nZtjaupU

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X