AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-28077717

Romain Gapteau's questions

Martin Hope
Romain Gapteau
Asked: 2025-04-04 15:28:07 +0800 CST

O script de importação de csv no Planilhas Google não funciona com determinados arquivos csv. Por quê?

  • 5

Estou tendo um pequeno problema com um script que uso há anos. Este script permite que você importe um CSV de um anexo de e-mail para uma Planilha Google. Meus currículos, eu precisava usá-lo para importar CSVs de outro colaborador. Infelizmente, os dados na primeira linha não são recuperados. Mas é se eu abrir manualmente o CSV no Planilhas Google e baixar novamente o arquivo CSV e enviá-lo por e-mail para mim mesmo. Então, imaginei que o problema era com o CSV e não com o script. Se alguém tiver alguma ideia do porquê e como consertar o problema, eu sou um defensor.

Aqui estão os arquivos que eu uso: arquivos

Aqui está o script que eu uso:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*---------------------------------------Nom des feuilles---------------------------------------------------------*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

const paper_1 = "CSV brute"
const paper_2 = "paramètre"
const paper_3 = "BDD - Historique Valeur"
const paper_ID = "CSV ID"



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*---------------------------------------RECHERCHE CSV - MAIL-----------------------------------------------------*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*cherche le mail avec l'object test2 (message.getSubject() == 'test2') dans le libellés test (requete = "label:test")

label:rondes-poitiers---csv// Label - HUGO
label:rapports-de-ronde-domms//  Label - YAHYA*/

var requete ="{label:rapports-de-ronde-domms}";
function PROJET_pluto_test()
{
  var threads = GmailApp.search(requete);

  //cherche dans les 5 mails les plus récent (n<=5)
  //toutes les 15 mins un nouveau mail est reçu, l'itération permet de ne louper aucun mail
  var object_mail = SpreadsheetApp.getActive().getSheetByName("Feuille 123").getRange("N3").getValue()
  // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  for(var n=0;n<=5;n++)
  {
    var message = threads[n].getMessages()[0];
    Logger.log(object_mail + "  =  " + message.getSubject())
    if (message.getSubject() == object_mail)
    {
      //message pour prévenir (dans le google sheet)
      SpreadsheetApp.getActive().toast("📱➡📁 Recherche de données provenant de la tablette.");
      var attachment = message.getAttachments()[0];
      attachment.setContentTypeFromExtension();
      var ss = SpreadsheetApp.getActive();
      //importer les données dans la feuille nommée CSV (sh = ss.getSheetByName("CSV brute2"))
      var sh = ss.getSheetByName(paper_1);
      //stock les données dans la variable nommée dataString
      var dataString = attachment.getDataAsString();
      //applique la mise en forme aux données
      var csvData = CSVToArray(dataString);
      
      //supprime les données et le format de la feuille CSV
      sh.clear({ formatOnly: true, contentsOnly: true });
      
      //place les valeurs dans le google sheet
      var lastRowValue = sh.getLastRow();

      for (var i = 0; i < csvData.length; i++) 
      {
        sh.getRange(i+lastRowValue+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
                Logger.log("🔴" +new Array(csvData[i]))
      } 
    }
  }
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*--------------------------------------MISE EN FORME DONNEES-----------------------------------------------------*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// création d'une mise en forme des données pour les placer correctement dans le google sheet.
function CSVToArray( strData, strDelimiter ){ 
  strDelimiter = (strDelimiter || ",");
  var objPattern = new RegExp(
    (
      // Delimiters.
      "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +


      // Quoted fields.
      "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +


      // Standard fields.
      "([^\"\\" + strDelimiter + "\\r\\n]*))"
    ),
    "gi"
  );
  // varible stockant les données.
  var arrData = [[]];
  // variable stockant le paterne
  var arrMatches = null;
  while (arrMatches = objPattern.exec( strData )){
                Logger.log(strData)
    // Get the delimiter that was found.
    var strMatchedDelimiter = arrMatches[ 1 ];
    if (
      strMatchedDelimiter.length &&
      (strMatchedDelimiter != strDelimiter)
    ){
      arrData.push( [] );
    }
    if (arrMatches[ 2 ]){
      var strMatchedValue = arrMatches[ 2 ].replace(
        new RegExp( "\"\"", "g" ),
        "\""
      );
    } else {
      var strMatchedValue = arrMatches[ 3 ];
    }
    arrData[ arrData.length - 1 ].push( strMatchedValue );
  }
  return( arrData );
}

javascript
  • 1 respostas
  • 33 Views
Martin Hope
Romain Gapteau
Asked: 2024-11-04 21:21:16 +0800 CST

Classificar uma matriz 2D com uma matriz 1D no appscript

  • 6

Quero classificar uma matriz 2D com uma matriz 1D no AppScript.

para que a matriz 2D fique na mesma ordem que a matriz 1D.

Aí está o link da planilha do Google:

Matriz 1D
um
b
c
e
e
e
g
o
eu
eu
o
eu
Matriz 2D
b 156
e 68
um 507
c 22
e 430
e 555
g 689
o 62
eu 395
eu 209
eu 745
o 37

Eu uso o alfabeto como exemplo, mas no meu caso não é apenas a letra, mas o nome completo.

Tentei o script de outro post com o nome: "Classificar array de objetos por lista arbitrária em Javascript", mas não funciona, apenas me retorna meu array 2D sem classificá-lo.

o script que eu tento:

const objects = spreadsheetApp.getActive().getSheetByName("feuille 2").getRange('A;B').getValues()
const order = spreadsheetApp.getActive().getSheetByName("feuille 1").getRange('A;A').getValues()


const orderIndex = {}
order.forEach((value, index) => orderIndex[value] = index);

// Sort
objects.sort((a, b) => orderIndex[a.id] - orderIndex[b.id]);

// Log
console.log('orderIndex:', orderIndex);
console.log('objects:', objects);

Editar: Script que tentei com base na resposta, que não funcionou:

function myFunction() {

let objects = SpreadsheetApp.getActive().getSheetByName("Feuille 7").getRange('D:E').getValues()
let order = SpreadsheetApp.getActive().getSheetByName("Feuille 7").getRange('A:A').getValues().flat()

/* Create a mapping object `orderIndex`:
*/

let orderIndex = {}
order.forEach((value, index) => orderIndex[value] = index);

// Sort
objects.sort((a, b) => orderIndex[a] - orderIndex[b]) 

// Log
Logger.log("/////////////////////////order////////////////////////////////")
Logger.log(order)
Logger.log("/////////////////////////objects////////////////////////////////")
Logger.log(objects)


SpreadsheetApp.getActive().getSheetByName("Feuille 7").getRange('H:I').setValues(objects)
}
arrays
  • 3 respostas
  • 80 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve