Partager une portion seulement d'un tableau ?
Bonjour à tous,
pour des besoins spécifiques je devrais partager avec 1personne une partie seulement de mon tableau.
Voir photo (L'encadré en rose c'est a dire : Le stock en live).
Dans la partie que je devrais partager il y a des sommes qui proviennent de tableau total et qui se feront au fur et mesure de l'année.
J'ai pensé a un tableau dynamique seulement, le tableau dynamique se fait sur une autre feuille du même projet ?
et si je partage cette partie de tableau en tableau dynamique avec cette personne elle aura accès aux feuilles ? et donc la possibilité de voir le tableau complet ce que je veux pas car il y aurait des données confidentiels.
Comment devrais je procéder selon vos conseils ?
https://docs.google.com/spreadsheets/d/1-hm-UylEoJ6acX-6Dxklk6d9s8KJpzOS2AaYi2E_gPk/edit?usp=sharing
Merci pour votre aide
Le tableau dynamique fonctionne très bien pour mon projet
mais puis je seulement partager 1 seule feuille d'un projet quand il y en a plusieurs feuilles ?
Ou refuser l'accès des autres feuilles à certaines personnes ?
Bonjour,
- est-ce une question de confort ? on peut alors faire un fichier séparé avec un importrange
- ou est-ce une question de confidentialité ? dans ce cas pour rendre étanche, on peut
- soit envoyer le tableau par mail s'il ne doit pas être lu à trop grande fréquence
- ou envoyer le tableau dans un fichier partagé
- dans les 2 cas ce ne sera pas du temps réel et il faudra une action de ta part pour mettre à disposition
Bonjour,
est-ce une question de confort ? on peut alors faire un fichier séparé avec un importrange
ou est-ce une question de confidentialité ?
Bonjour Merci pour ta réponse :)
C'est pour un souci de confidentialité et la seule raison pour laquelle je ne peux pas partager tout le tableau.
Voici ce que j'ai : 1 Fichier avec plusieurs feuilles de calcul (petits onglet en bas de google sheets) qui sont toutes dans le même fichier
Exemple :
Nom du fichier "XXX" avec :
- Feuille 1 = "Tableau complet 2022" => confidentiel accessible seulement aux membres de l'équipe.
- Feuille 2 = "TDC qui vient d'une partie de la feuille 1"
=> cad juste mon "stock en live" qui se calcul en fonction des Sorties/ Rentrées des références
=> Et seule info que je peux partager à mon fournisseur. - Feuille 3 = "Tableau complet 2021" => confidentiel accessible seulement aux membres de l'équipe.
MAIS si je comprends bien ta réponse :
- Je ne peux pas partager 1seule feuille d'un fichier qui contient plusieurs feuilles (voir exemple plus haut) ?
=> Sinon, la personne avec qui je partage la "feuille 2 TDC" du fichier "XXX" accède à toutes autre feuilles ? C'est bien çà ?
Merci pour ta réponse :))
En effet, enfin c'est ce que je crains sauf avis contraire de Gilbert !
Quoi qu'il en soit, je te prépare une version où tu déverseras les données "publiables" dans un autre fichier partagé.
bonjour,
Pour en avoir la certitude il faut faire des essais
Normalement
bonjour,
Pour en avoir la certitude il faut faire des essais
Normalement
Le premier teste que je viens d'essayer :
- J'ai été sur la feuille TDC que je voulais essayer de "partager"
et j'ai commencé par le simple envoi d'un Mail envoyé (en pdf) dans ma boite perso.
RESULTAT :
=> il envoie toutes les feuilles + le TDC donc perte de confidentialité
Normalement, en pdf, tu peux n'envoyer qu'une seule feuille. Mais je pense qu'il est plus pratique d'envoyer le tableau dans le corps du mail.
Je vais m'y pencher dès que j'ai quelques minutes.
Normalement, en pdf, tu peux n'envoyer qu'une seule feuille. Mais je pense qu'il est plus pratique d'envoyer le tableau dans le corps du mail.
Je vais m'y pencher dès que j'ai quelques minutes.
Pas de souci à ton aise :)
J'ai déjà reçu beaucoup de réponses avec le forum c'est vraiment super chouette pour évoluer.
Merci beaucoup pour votre aide en tout cas :)))
Cernant le mail je n'ai pas pu choisir la feuille que je voulais envoyer via le mail, il envoie tout le paquet complet sans me proposer une sélection de feuille à choisir
tu fais une copie de feuille et tu enregistres cette feuille dans un nouveau fichier (GSheets) pas PDF
si les fichiers de données ne sont pas partagés ils ne peuvent pas être visionnés
il ne devrait y avoir que les résultats visibles
pour une seule feuille
function envoiCopieFeuillePDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
const doc = SpreadsheetApp.getActive();
const docID = 'ici id du fichier';
const feuilleID = 'ici gid de la feuille';
const email = 'untel@email.com';
const fichier = "mon tableau de synthèse.pdf"
const objet = 'Test pdf';
const corps = "Veuillez trouver ci-joint ...";
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
'&size=A4' +
'&portrait=true' + // orientation portrait, false pour paysage
'&fitw=false' + // pas d'ajustement en largeur
'&sheetnames=false&printtitle=false' + // pas de nom ni de titre à l'impression
'&pagenumbers=false&gridlines=false' + // pas de numérotation, pas de grille
'&fzr=false' + // frozen rows = pas de répétition de l'en-tête
'&gid=' + feuilleID;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
attachments: [{
fileName: fichier,
content: reponse.getBytes(),
mimeType: "application/pdf"
}]
});
} mais je pense que ce n'est pas la meilleure solution, je vais faire 2 autres solutions
- envoi du tableau dans le corps du mail
- écriture dans un fichier partagé
reste aussi la solution de Gilbert
solution table dans le corps du mail, avec couleurs ! que je trouve plus efficace que le fichier pdf attaché
function sendEmail() {
MailApp.sendEmail({to:'untel@gmail.com',
subject: 'my subject',
htmlBody: tableHTML()})
};
function tableHTML(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ma feuille')
var plage = sh.getDataRange()
var data = plage.getDisplayValues()
var taille = plage.getFontSizes()
var fond = plage.getBackgrounds()
var couleur = plage.getFontColors()
var police = plage.getFontFamilies()
var htmltable = '<table style="border:1px solid #CCC;border-collapse:collapse;">';
for (row = 0; row<data.length; row++){
htmltable += '<tr>';
for (col = 0 ;col<data[row].length; col++){
if (data[row][col] === "" || 0) {htmltable += '<td>' + ' ' + '</td>';}
else
htmltable += '<td style="border:1px solid #CCC; font-family:' + police[row][col] + '; background-color:' + fond[row][col] + '; color:' + couleur[row][col] + '; font-size:' + taille[row][col] + 'px;">' + data[row][col] + '</td>';
}
htmltable += '</tr>';
}
htmltable += '</table>';
return htmltable
}dernière solution
- tu crées un fichier "public" avec une belle mise en forme
- tu relèves son identifiant
- cette fonction lui transmettra les données de ta feuille (un seul onglet)
function maj(){
var id = 'id du fichier public'
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ma feuille')
var data = sh.getDataRange().getDisplayValues()
var dest = SpreadsheetApp.openById(id).getSheets()[0]
dest.getDataRange().clear()
dest.getRange(1,1,data.length,data[0].length).setValues(data)
Browser.msgBox('Fichier mis à jour !')
}Oulalal y a beaucoup d'info .... je dois me concentrer sur vos dernières réponses
Mon tableau d'essai partagé est toujours là :))
https://docs.google.com/spreadsheets/d/1-hm-UylEoJ6acX-6Dxklk6d9s8KJpzOS2AaYi2E_gPk/edit?usp=sharing
Dans fichier c'est casi le même tableau que mon orignal avec plusieurs feuille et une feuille TDC de stock en live.
tu fais une copie de feuille et tu enregistres cette feuille dans un nouveau fichier (GSheets) pas PDF
si les fichiers de données ne sont pas partagés ils ne peuvent pas être visionnés
il ne devrait y avoir que les résultats visibles
J'ai essayé la Solution de Gilbert
J'ai pris l'onglet de ma feuille TCD en suite click droit
> Copier dans > 1 Nouvelle feuille de calcul
Résultat : cela ne fonctionne pas voici ce qu'il indique sur la nouvelle feuille de calcul que j' ai copiée :
=> ERR Nom de feuille inconnu : et il indique le nom de mon onglet TCD
Je pense qu'on ne peut pas copier dans un nouvelle feuille de calcul un tableau croisé dynamique (car il cherche sur les autres feuilles des info qui ne sont plus là ?)
Dans ce cas, il reste en effet cette solution que tu as commencé à mettre en œuvre (il y avait une erreur sur le nom de l'onglet)
function maj(){
var id = '1_u9E--3rTip-XNCVHjdJfmHCxrJrTWdgLQHeUIyKdSk'
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copie de TDC- Stock en live')
var data = sh.getDataRange().getDisplayValues()
var dest = SpreadsheetApp.openById(id).getSheets()[0]
dest.getDataRange().clear()
dest.getRange(1,1,data.length,data[0].length).setValues(data)
Browser.msgBox('Fichier mis à jour !')
}Résultat : https://docs.google.com/spreadsheets/d/1_u9E--3rTip-XNCVHjdJfmHCxrJrTWdgLQHeUIyKdSk/edit#gid=0
Nota : ce fichier ci-dessus est un fichier test, je vais le supprimer dans 2 jours. Il te faudra en créer un avec partage en lecture.
-OU-
La solution d'envoi par mail (mets ton email pour tester)
function sendEmail() {
MailApp.sendEmail({to:'xxxxxxxxxxxxx@gmail.com',
subject: 'situation de stock',
htmlBody: tableHTML()})
};
function tableHTML(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copie de TDC- Stock en live')
var plage = sh.getDataRange()
var data = plage.getDisplayValues()
var taille = plage.getFontSizes()
var fond = plage.getBackgrounds()
var couleur = plage.getFontColors()
var police = plage.getFontFamilies()
var htmltable = '<table style="border:1px solid #CCC;border-collapse:collapse;">';
for (row = 0; row<data.length; row++){
htmltable += '<tr>';
for (col = 0 ;col<data[row].length; col++){
if (data[row][col] === "" || 0) {htmltable += '<td>' + ' ' + '</td>';}
else
htmltable += '<td style="border:1px solid #CCC; font-family:' + police[row][col] + '; background-color:' + fond[row][col] + '; color:' + couleur[row][col] + '; font-size:' + taille[row][col] + 'px;">' + data[row][col] + '</td>';
}
htmltable += '</tr>';
}
htmltable += '</table>';
return htmltable
}je préfère la première qui n'encombre pas les boites aux lettres, c'est toujours le même fichier qui est réactualisé en lecture
Bonsoir j'ai essayé les 2 scripts... mais chez moi cela fonctionne pas
https://docs.google.com/spreadsheets/d/1-hm-UylEoJ6acX-6Dxklk6d9s8KJpzOS2AaYi2E_gPk/edit?usp=sharing
Je voulais mettre une image Printscreen ci dessous (mais il inscrit service indisponible)
Le script indique une erreur quand je fais exécuter dans l'éditeur de script pour le premier et le 2e aussi il me met un code erreur.
Et je ne sais pas si ca fonctionne car je vois pas si un email est parti et dans ma boite email je ne reçois rien.
Voici le code erreur que j'ai :
19:20:01 Avis Exécution démarrée
19:20:01 Erreur
TypeError: Cannot read property 'source' of undefined
onEdit @ Code.gs:4
Bonsoir j'ai essayé les 2 scripts... mais chez moi cela fonctionne pas
- pour le script
maj, l'id à mettre n'est pas celui du fichier contenant les données (quand j'ai essayé cela m'a effacé toutes les données de la première feuille et mis le tableau), mais le fichier dans lequel le tableau sera reporté et qui servira pour le lecture seule - pour le script
sendemailil n'y a pas d'erreur, je viens de ré-essayer avec mon email et j'ai bien reçu les données, j'ai ré-essayé avec ton email, mais comme il n'y a plus de données suite au 1/ il n'y a rien dans le corps du message
=> les 2 fonctionnent
Bonjour,
as-tu réussi in fine à faire fonctionner ?
Je reviens donner un petit feed-back dès que c’est fait certainement début Après-midi.
Et tu sais à quel fréquence les email devraient s’envoyer ?
est ce à chaque fois qu’une données est modifiée ou 1x/sem ?