2017-07-28 2 views
0

J'ai une fiche Google contenant des informations provenant d'un formulaire Google. Deux des colonnes créent une plage de dates et j'aimerais que la feuille crée automatiquement une nouvelle ligne d'informations pour chaque date de la plage et copie toutes les autres informations de la ligne d'origine pour chaque ligne créée. En fin de compte, toutes les dates de la gamme dispose de sa propre ligne, peu importe qu'il soit 2 jours ou 25 et toutes les informations recueillies par le formulaire présent pour chaque jourAjout d'une ligne et copie des informations de la ligne d'origine pour chaque jour d'une plage de dates dans Google Sheets

Here is an example

Répondre

0

Voici une fonction qui fera l'astuce pour toi. Ma feuille de calcul est ci-dessous après l'exécution. Je viens de l'ajouter au bas des données de départ.

function convertDateRangetoRows() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sht=ss.getActiveSheet(); 
    var rng=sht.getDataRange(); 
    var rngA=rng.getValues(); 
    var rngB=[]; 
    var day=86400000; 
    rngB.push(rngA[0]); 
    for(var i=1;i<rngA.length;i++) 
    { 
    rngB.push(rngA[i]); 
    if(rngA[i][0] && rngA[i][1] && rngA[i][0]!=rngA[i][1]) 
    { 
     var dt0=new Date(rngA[i][0]); 
     var dt1=new Date(rngA[i][1]); 
     var days=(dt1.valueOf()-dt0.valueOf())/day; 
     var dt=dt0.valueOf(); 
     for(j=0;j<days;j++) 
     { 
     dt+=day; 
     rngB.push([Utilities.formatDate(new Date(dt), Session.getScriptTimeZone(), "MM/dd/yyyy"),'',rngA[i][2],rngA[i][3],rngA[i][4]]); 
     } 
    } 
    var intermediate='nothing'; 
    } 
    var rngb=sht.getRange(sht.getLastRow()+1,1,rngB.length,rngB[0].length); 
    rngb.setValues(rngB); 
var end='the end is near'; 
} 

enter image description here

+0

J'apprécie votre aide. Je pensais que si je donnais une feuille d'échantillon, je pourrais adapter la formule/fonction/script pour répondre à mes besoins, mais je fais toujours quelque chose de mal. Dans ma feuille actuelle, la "Date de Voyage" est la colonne C et la "Date de Retour" est la Colonne G. Un autre problème que j'ai trouvé est que lorsque de nouvelles données viennent du formulaire, elle écrase automatiquement la prochaine ligne utilisée. Est-il possible d'ajouter les lignes qui sont déclenchées par la plage de dates au bas de la feuille de calcul, en commençant à la ligne 2000. J'ai une autre feuille qui est en train de trier toutes les données. Merci encore –

+0

Je vais devoir voir les données avec une explication de ce que vous voulez ensuite. Vous pourriez juste essayer de passer à une autre question. S'il vous plaît, cochez celui-ci comme terminé et je vais vous aider avec le prochain exemple. – Cooper

+0

J'ai fait un autre poste avec essentiellement le même titre et lié une copie de la feuille. Merci pour tout votre aide. –