Προς το περιεχόμενο

Γίνεται αυτό στο google sheets;


rafinos
Μετάβαση στην απάντηση Απαντήθηκε από Billator,

Προτεινόμενες αναρτήσεις

Γεια σας,

στο excel αν θέλω να έχω μια δυναμική dropdown λίστα (δηλαδή να προστίθενται αυτόματα τα δεδομένα ενός κελιού σε αυτήν) φτιάχνω έναν πίνακα (table) και ότι προσθέτω σε αυτόν προστίθεται αυτόματα στη λίστα. 

Υπάρχει τρόπος να γίνει αυτό στο google sheets; Δεν μιλάω για την μορφοποίηση και για την προσθήκη "Φίλτρου" ώστε να μοιάζει με πίνακα. Με ενδιαφέρει να προστίθενται αυτόματα στις επιλογές της dropdown list τα μελλοντικά δεδομένα μιας στήλης του εν λόγω «πίνακα».

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Λύση
Δημοσ. (επεξεργασμένο)
6 ώρες πριν, rafinos είπε

Γεια σας,

στο excel αν θέλω να έχω μια δυναμική dropdown λίστα (δηλαδή να προστίθενται αυτόματα τα δεδομένα ενός κελιού σε αυτήν) φτιάχνω έναν πίνακα (table) και ότι προσθέτω σε αυτόν προστίθεται αυτόματα στη λίστα. 

Υπάρχει τρόπος να γίνει αυτό στο google sheets; Δεν μιλάω για την μορφοποίηση και για την προσθήκη "Φίλτρου" ώστε να μοιάζει με πίνακα. Με ενδιαφέρει να προστίθενται αυτόματα στις επιλογές της dropdown list τα μελλοντικά δεδομένα μιας στήλης του εν λόγω «πίνακα».

Ναι μπορεί να γίνει με Google script, έχω υλοποιήσει περίπου κάτι τέτοιο. 
(Δυναμικό search bar, το οποιο σε περίπτωση που δεν υπάρχει μία τιμή να λειτουργεί ως import bar για το table που παρακολουθεί, από το ίδιο μπορείς να κάνεις και update τα δεδομένα του κεντρικού table ώστε να μην χρειαστεί να το "ανοιξεις" ποτέ. )

Στην ουσία το πετυχαίνεις με το να "προσθέτεις" εκ νέου το dropdown validation. Το κάνεις με ένα γενικό range ώστε να δουλεύει πάντα πχ "C1:C"

var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("Main");
var tableSheet = ss.getSheetByName("Table");

// Update the data validation for 'Main'!A1 cell
var cell = mainSheet.getRange('A1');
var range = tableSheet.getRange('C1:C');
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range, true).build();
cell.setDataValidation(rule);

 

Επεξ/σία από Billator
  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν γνωρίζω καθόλου από Google Script αλλά μπορώ να καταλάβω ότι είναι κάτι σαν javascript το συγκεκριμένο. Το μόνο που θέλω να μου διευκρινήσεις είναι το cell. Είναι ουσιαστικά το κελί το οποίο λειτουργεί σαν search bar;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
7 ώρες πριν, rafinos είπε

Δεν γνωρίζω καθόλου από Google Script αλλά μπορώ να καταλάβω ότι είναι κάτι σαν javascript το συγκεκριμένο. Το μόνο που θέλω να μου διευκρινήσεις είναι το cell. Είναι ουσιαστικά το κελί το οποίο λειτουργεί σαν search bar;

Το Google script είναι serverside JavaScript στην πραγματικότητα. Οπότε είναι αρκετά εύκολο το να γράψεις. 

Ακριβώς στο  cell  θα ενημερώνεται η λίστα όπως θες στο κελί 'Main!A1'. To παραπάνω που παρέθεσα το μόνο που κάνει είναι το action για overwrite του validation formatting στο cell A1. Κάθε φορά που θα τρέχει αυτό το κομμάτι θα "δίνει" το ανανεωμένο column range..

Για να γίνει αυτόματα η ενημέρωση θα χρειαστεί να συνδυαστεί με ένα function onEdit (αν η προσθήκη των νέων γραμμών γίνεται από τον χρήση) ή με ένα onChange σε περίπτωση που η προσθήκη γίνεται από κάποιο αυτοματισμό / plugin etc. Αλλιώς μπορείς να κάνεις ένα action button, custom menu ή time trigger function. 

Αν θες παραπάνω βοήθεια σε καμία ώρα θα είμαι στο γραφείο για να σου παραθέσω ένα workable sample code. 

Επεξ/σία από Billator
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var mainSheet = ss.getSheetByName("Main");
  var tableSheet = ss.getSheetByName("Table");
  
  // Check if the edit was made in the 'Table' sheet
  if (e.range.getSheet().getName() === "Table") {
    // Update the data validation for 'Main'!A1 cell
    var cell = mainSheet.getRange('A1');
    var range = tableSheet.getRange('C1:C');
    var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range, true).build();
    cell.setDataValidation(rule);
  }
}

// Function to install the onEdit trigger
function installTrigger() {
  ScriptApp.newTrigger("onEdit")
           .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
           .onEdit()
           .create();
}

Το δεύτερο κομμάτι βάλτο αν δεν γνωρίζεις πως να φτιάξεις trigger στο google sheet και τρέξτο απλά μια φορά. Για να δημιουργηθεί το onEdit Trigger.

Κάθε φορά που θα κάνεις οποιοδήποτε είδος αλλαγής στο sheet tab "Table" θα τρέχει η συνάρτηση αυτή αυτόματα. Σε περίπτωση που θες να το "περιορίσεις" ακόμα περισσότερο, μπορείς να βάλεις αντί για όλο το sheet να παρακολουθεί κάποιο συγκεκριμένο column όταν δεχτεί επεξεργασία, για να μην σου τρέχει συνέχεια όταν επεξεργάζεται το table.

Αν θες τώρα να καλείς όλο το row από το "Table" κάθε φορά που επιλέγεις κάτι από το drop down αυτό είναι άλλο action αν θες να σου γράψω πως λειτουργεί μία τέτοια βασική λογική. 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...