Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2024-01-21T18:30:21+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Exécuter un script Bash au démarrage Linux, message #2537722024-01-21T18:30:21+01:00ajarry/@ajarryhttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253772<figure><blockquote>
<p>C’est juste que je n’ai pas de quoi vérifier sous la main ; mais si <code>@reboot</code> marche en mode utilisateur ça ne changera en effet pas ta problématique. </p>
<p>Je croyais l’avoir mentionné mais je viens de voir que non. Il faut que ton script fonctionne en mode non interactif… Quand tu le testes dans ta session, tu es en mode interactif or ce ne sera pas le cas pour cron. Du coup, tes alias par exemple ne seront pas reconnus et (pernicieux) certaines commandes ne seront pas trouvées car les répertoires de recherche des commandes ne sont pas les mêmes. Il y aussi (rare et plus pernicieux) le cas des commandes qui ne fonctionnent que en mode interactif ou alors en spécifiant l’option qui va bien. </p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253703">Gil Cot</a></figcaption></figure>
<p>Bonjour, désolé pour cette réponse tardive.</p>
<p>Ce que je n’arrive pas a comprendre c’est que j’ai déjà effectué ce genre de commande sur d’autres raspberry de même version avec les mêmes paramètres et cela marchait bien sans encombres. Je souhaite simplement lancer mon script au démarrage de la raspberry… Autrement si vous avez d’autres manières de faire je suis aussi preneur.
Tant que le résultat est le même, le chemin importe peu.</p>
<p>Merci ! <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"> </p>Exécuter un script Bash au démarrage Linux, message #2537032024-01-13T18:26:09+01:00Gil Cot/@Gil%20Cothttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253703<p>C’est juste que je n’ai pas de quoi vérifier sous la main ; mais si <code>@reboot</code> marche en mode utilisateur ça ne changera en effet pas ta problématique. </p>
<p>Je croyais l’avoir mentionné mais je viens de voir que non. Il faut que ton script fonctionne en mode non interactif… Quand tu le testes dans ta session, tu es en mode interactif or ce ne sera pas le cas pour cron. Du coup, tes alias par exemple ne seront pas reconnus et (pernicieux) certaines commandes ne seront pas trouvées car les répertoires de recherche des commandes ne sont pas les mêmes. Il y aussi (rare et plus pernicieux) le cas des commandes qui ne fonctionnent que en mode interactif ou alors en spécifiant l’option qui va bien. </p>Exécuter un script Bash au démarrage Linux, message #2537022024-01-13T16:50:08+01:00ajarry/@ajarryhttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253702<figure><blockquote>
<p>Par défaut, c’est une <a href="https://manpages.debian.org/bookworm/cron/cron.8.en.html#DEBIAN_SPECIFIC">vixie-cron twicked for Debian</a>. (j’avais lu que ça allait peut-être devenir <a href="https://salsa.debian.org/debian/cronie">cronie</a> après Buster mais je ne sais pas où ça en est et si ce n’est pas systemd-cron qui est par défaut…) De mémoire (mais je suis pas sûr), contrairement au vixie-cron original, ça supporte <code>@reboot</code>.</p>
<p>L’autre point : la commande <code>crontab -e</code> va te faire éditer la table pour l’utilisateur qui l’a lancé. Le chemin, dans <code>/tmp/</code> va varier et la table finale sauvegardée sera normalement dans <code>/var/spool/cron/crontabs/</code> (ne pas éditer directement, la commande dédiée passe par un fichier temporaire pour de bonnes raisons.) <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"> À vérifier si les tables utilisateurs supportent <code>@reboot</code> (de mémoire non.)<br>
Par contre, les tables systèmes vont être dans <code>/etc/cron.d/</code> qu’il faut éditer manuellement après avoir créé le fichier qui va bien (il ne faut pas toucher aux qui sont créés et modifiés par les applis) : par exemple <code>/etc/cron.d/localhost</code>. Il n’y a pas de commande pour manipuler les tables systèmes, et il faut faire très attention en les éditant (pas de droit à l’erreur on va dire) : ici il faut bien spécifier le compte qui va exécuter la tâche, donc la forme <code>@reboot login /chemin/script.sh</code></p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253698">Gil Cot</a></figcaption></figure>
<p>Pour ma part, je suis le seul utilisateur de ma machine, je ne sais pas si c’est forcément utile du coup de spécifier un utilisateur ?
J’avais fait la même manipulation sur une Raspberry Pi 3B (de mémoire) et cela fonctionnait parfaitement sans avoir à rajouter quoi que ce soit, mais s’il faut passer par là je le ferai c’est pas grand chose.</p>Exécuter un script Bash au démarrage Linux, message #2536982024-01-13T00:49:00+01:00Gil Cot/@Gil%20Cothttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253698<p>Par défaut, c’est une <a href="https://manpages.debian.org/bookworm/cron/cron.8.en.html#DEBIAN_SPECIFIC">vixie-cron twicked for Debian</a>. (j’avais lu que ça allait peut-être devenir <a href="https://salsa.debian.org/debian/cronie">cronie</a> après Buster mais je ne sais pas où ça en est et si ce n’est pas systemd-cron qui est par défaut…) De mémoire (mais je suis pas sûr), contrairement au vixie-cron original, ça supporte <code>@reboot</code>.</p>
<p>L’autre point : la commande <code>crontab -e</code> va te faire éditer la table pour l’utilisateur qui l’a lancé. Le chemin, dans <code>/tmp/</code> va varier et la table finale sauvegardée sera normalement dans <code>/var/spool/cron/crontabs/</code> (ne pas éditer directement, la commande dédiée passe par un fichier temporaire pour de bonnes raisons.) <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"> À vérifier si les tables utilisateurs supportent <code>@reboot</code> (de mémoire non.)<br>
Par contre, les tables systèmes vont être dans <code>/etc/cron.d/</code> qu’il faut éditer manuellement après avoir créé le fichier qui va bien (il ne faut pas toucher aux qui sont créés et modifiés par les applis) : par exemple <code>/etc/cron.d/localhost</code>. Il n’y a pas de commande pour manipuler les tables systèmes, et il faut faire très attention en les éditant (pas de droit à l’erreur on va dire) : ici il faut bien spécifier le compte qui va exécuter la tâche, donc la forme <code>@reboot login /chemin/script.sh</code></p>Exécuter un script Bash au démarrage Linux, message #2536942024-01-12T15:10:46+01:00ajarry/@ajarryhttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253694<figure><blockquote>
<p>Quelques questions me viennent à l’esprit :</p>
<ol>
<li>Quelle version de quelle implémentation de <code>crontab</code> utilises-tu ? Ou, si c’est celle par défaut de ta distribution, quelle distribution utilises-tu et dans quelle version ?</li>
<li>Es-tu bien dans la crontab système ? (voir la documentation de l’implémentation utilisée —d’où la question précédente— mais habituellement <code>/etc/crontab</code> et éventuellement d’autres fichiers liés par exemple dans <code>/etc/cron/</code>)
<ul>
<li>Si oui, il manque le compte qui doit exécuter le script (la ligne devrait ressembler à <code>@reboot user /chemin/script.sh</code>…)</li>
<li>Si non, il faut voir dans la documentation de ton implémentation ce qui est autorisé ; en général <code>@reboot</code> n’est possible que dans une table système…</li>
</ul>
</li>
<li>Es-ce que <code>/chemin/script.sh</code> est bien accessible au compte qui va lancer le script ? Et est-ce que le fichier est exécutable ? (crontab ne lit pas les fichiers, ça lance des commandes…) </li>
</ol>
<p>Pour le MTA, c’est parce-que crontab essaie de notifier qu’il y a une erreur. Si ton système n’est pas configuré pour envoyer des mails, il faut configurer la délivrance locale, et dans ce cas tu devrais avoir un fichier ou dossier local des messages qui est consultable en ligne de commande en lançant <code>mailx</code>… (ou en utilisant un pager comme <code>less</code> sur le fichier.)</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253669">Gil Cot</a></figcaption></figure>
<p>Je suis sur Debian 11, c’est celle par défaut.
Le script est bien exécutable.
Lorsque je tape <code>crontab -e</code>, j’arrive dans /tmp/crontab.VdE0y2/crontab.</p>Exécuter un script Bash au démarrage Linux, message #2536692024-01-11T13:29:10+01:00Gil Cot/@Gil%20Cothttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253669<p>Quelques questions me viennent à l’esprit :</p>
<ol>
<li>Quelle version de quelle implémentation de <code>crontab</code> utilises-tu ? Ou, si c’est celle par défaut de ta distribution, quelle distribution utilises-tu et dans quelle version ?</li>
<li>Es-tu bien dans la crontab système ? (voir la documentation de l’implémentation utilisée —d’où la question précédente— mais habituellement <code>/etc/crontab</code> et éventuellement d’autres fichiers liés par exemple dans <code>/etc/cron/</code>)
<ul>
<li>Si oui, il manque le compte qui doit exécuter le script (la ligne devrait ressembler à <code>@reboot user /chemin/script.sh</code>…)</li>
<li>Si non, il faut voir dans la documentation de ton implémentation ce qui est autorisé ; en général <code>@reboot</code> n’est possible que dans une table système…</li>
</ul>
</li>
<li>Es-ce que <code>/chemin/script.sh</code> est bien accessible au compte qui va lancer le script ? Et est-ce que le fichier est exécutable ? (crontab ne lit pas les fichiers, ça lance des commandes…) </li>
</ol>
<p>Pour le MTA, c’est parce-que crontab essaie de notifier qu’il y a une erreur. Si ton système n’est pas configuré pour envoyer des mails, il faut configurer la délivrance locale, et dans ce cas tu devrais avoir un fichier ou dossier local des messages qui est consultable en ligne de commande en lançant <code>mailx</code>… (ou en utilisant un pager comme <code>less</code> sur le fichier.)</p>Exécuter un script Bash au démarrage Linux, message #2536672024-01-11T11:33:21+01:00ajarry/@ajarryhttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253667<figure><blockquote>
<p>Hello, tu as tenté quoi avec crontab exactement ? As-tu une erreur dans les logs ?</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253647">viki53</a></figcaption></figure>
<p>J’ai ajouté la ligne <code>@reboot /chemin/script.sh</code>, les logs me signalent quelque chose comme "no MTA detected…" (je ne sais plus exactement). J’ai fais quelques recherches la dessus, j’ai essayé d’installer Postfix, j’ai aussi essayé de faire sans MTA mais cela ne fonctionne pas non plus.</p>Exécuter un script Bash au démarrage Linux, message #2536472024-01-10T16:47:09+01:00viki53/@viki53https://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253647<p>Hello, tu as tenté quoi avec crontab exactement ? As-tu une erreur dans les logs ?</p>Exécuter un script Bash au démarrage Linux, message #2536462024-01-10T15:53:03+01:00ajarry/@ajarryhttps://zestedesavoir.com/forums/sujet/17294/executer-un-script-bash-au-demarrage-linux/?page=1#p253646<p>Bonjour, je souhaite exécuter un script Bash au démarrage de ma Raspberry ce script permet de lancer un programme Python. Je sais, normalement, effectuer cette tâche seulement cette fois ci, cela ne fonctionne pas.
J’ai essayé avec crontab, init.d et rc.local mais aucun ne fonctionne. </p>
<p>Merci pour votre aide ! <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"> </p>lancer une commande depuis mon script bash, message #2528752023-11-15T18:35:05+01:00lmghs/@lmghshttps://zestedesavoir.com/forums/sujet/1663/lancer-une-commande-depuis-mon-script-bash/?page=1#p252875<p>(Je me suis fait avoir par le spam qui l’a fait remonter…)</p>lancer une commande depuis mon script bash, message #2528402023-11-13T01:00:21+01:00adri1/@adri1https://zestedesavoir.com/forums/sujet/1663/lancer-une-commande-depuis-mon-script-bash/?page=1#p252840<p>Le sujet date de 2014, je pense qu’il est résolu depuis… <img src="/static/smileys/svg/siffle.svg" alt=":-°" class="smiley"></p>
<blockquote>
<p>Si <code>lsb_release</code> n’est pas installée ou pas dans le PATH, ce n’est pas en utilisant Python (autrement moins adapté à l’exécution de scripts externes) à la place de bash que ça va changer quoi que ce soit. — bon OK, nommer la variable PATH en Python n’aurait pas eu le même impact…</p>
</blockquote>
<p>Utiliser <code>lsb_release</code> a toujours été fragile (et de toute façon, le projet LSB est complètement mort maintenant). L’avantage de Python est qu’on n’a pas besoin de se reposer sur des commandes de ce genre. Le module standard <a href="https://docs.python.org/3/library/platform.html"><code>platform</code></a> est souvent suffisant, le module <a href="https://pypi.org/project/distro/"><code>distro</code></a> fait probablement mieux le taf que ce que LSB n’a jamais réussi à faire…</p>lancer une commande depuis mon script bash, message #2527832023-11-08T14:08:13+01:00lmghs/@lmghshttps://zestedesavoir.com/forums/sujet/1663/lancer-une-commande-depuis-mon-script-bash/?page=1#p252783<p>(Si <code>lsb_release</code> n’est pas installée ou pas dans le PATH, ce n’est pas en utilisant Python (autrement moins adapté à l’exécution de scripts externes) à la place de bash que ça va changer quoi que ce soit. — bon OK, nommer la variable PATH en Python n’aurait pas eu le même impact…)</p>
<p>Donc. Toucher à $PATH, qui est une variable réservée, dans un script (pour faire autre chose qu’ajouter des chemins à la liste) est tout sauf une bonne idée. Vu que l’essentiel des variables réservées sont en majuscules, un gros conseil: évite de CRIER inutilement.</p>
<p>PS: si l’indentation n’est pas requise par la machine ailleurs qu’en Python, elle reste fortement recommandée pour les humains, y compris soit meme.</p>
<p>PPS: Meme s’il est loin de tout voir, <a href="https://www.shellcheck.net/">https://www.shellcheck.net/</a> est un moyen de progresser</p>lancer une commande depuis mon script bash, message #2527532023-11-05T19:51:34+01:00amirouchbelkacem/@amirouchbelkacemhttps://zestedesavoir.com/forums/sujet/1663/lancer-une-commande-depuis-mon-script-bash/?page=1#p252753<p>merci le besion un des scripts poor website</p>actionner une macro google sheet sur iphone, message #2499082023-04-11T13:08:21+02:00whoare365q/@whoare365qhttps://zestedesavoir.com/forums/sujet/16720/actionner-une-macro-google-sheet-sur-iphone/?page=1#p249908<p>Please remember that all comments must be helpful, relevant, and respectful. All replies must be a genuine effort to answer the question helpfully; joke answers are not allowed. If you see any comments that violate this rule, please hit report.</p>actionner une macro google sheet sur iphone, message #2482972023-01-11T20:33:35+01:00virgile/@virgilehttps://zestedesavoir.com/forums/sujet/16720/actionner-une-macro-google-sheet-sur-iphone/?page=1#p248297<p>pour info j’ai trouvé une reponse
un grand merci a ce site pour son tuto:<a href="https://techncoach.fr/index.php/2020/11/02/google-apps-script-creer-un-toast/">https://techncoach.fr/index.php/2020/11/02/google-apps-script-creer-un-toast/</a>
ceci m’as permis de comprendre la fonction onedit(e){}
en la combinant avec des macro on arrive a creer un clavier de case a cocher qui permet de fonctionner depuis un iphone.
cela donne par exemple ce genre de code:
function onEdit(e) {
//IDENTIFICATION DE LA ZONE DE TRAVAIL
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.getActiveSheet();
var cellule = ss.getActiveRange();</p>
<p> //RECUPERATION DU NUMERO DE LIGNE DE LA CASE A COCHER
var numeroLigne = sheet.getActiveCell().getRow();
//RECUPERATION DU NUMERO DE colonne DE LA CASE A COCHER
var numeroColonne = sheet.getActiveCell().getColumn();
//RECUPERATION DU CONTENU DE LA CELLULE A COCHER
var contenuCellule = cellule.getValue();
//La condition IF
if(numeroColonne==1,numeroLigne==3){
if(contenuCellule === true) {
//Insertion d’une date de validation
sheet.getRange(numeroLigne,2).setValue(new Date());
macro1();
macro3()<br>
}
}<br>
if(numeroColonne==1,numeroLigne==4){
if(contenuCellule === true) {
//Insertion d’une date de validation
sheet.getRange(numeroLigne,2).setValue(new Date());
macro2();
macro4()
}<br>
}
}
si cela sert à quelqu’un c’est cool
bonne soirée</p>actionner une macro google sheet sur iphone, message #2481382023-01-04T19:26:40+01:00virgile/@virgilehttps://zestedesavoir.com/forums/sujet/16720/actionner-une-macro-google-sheet-sur-iphone/?page=1#p248138<p>merci de ta reponse mais j’ai deja regardé ça! j’utilise un samsung galaxy s21 sous android 13 à jour.
et j’utilise l’appli google sheet à jour aussi.
mes recherche me font voir que je ne suis pas le seul a avoir ce soucis mais il mesemble qu’il y a une astuce pour contourner le pb (une case à cocher qui demare la macro) mais j’aurais besoin d’un exemple.
si cela parle à qq’un c’est cool</p>actionner une macro google sheet sur iphone, message #2480872023-01-03T01:44:53+01:00Gil Cot/@Gil%20Cothttps://zestedesavoir.com/forums/sujet/16720/actionner-une-macro-google-sheet-sur-iphone/?page=1#p248087<p>Bonjour,</p>
<p>Utilises-tu l’appli de Google pour iphone ? Si oui, est-elle à jour ? Auquel cas il se pourrait que ce soit un bogue à leur reporter. </p>
<p>Si tu n’utilises pas l’appli, quel est ton navigateur ? Constates-tu le même souci avec un autre navigateur ? </p>actionner une macro google sheet sur iphone, message #2480862023-01-02T21:21:25+01:00virgile/@virgilehttps://zestedesavoir.com/forums/sujet/16720/actionner-une-macro-google-sheet-sur-iphone/?page=1#p248086<p>bonjour,
je suis face a une difficulté, j’ai une base de donnée sur google Sheets que je gère avec une macro pour valider chaque formulaire (il s’agit de gérer le cheptel d’une exploitation apicole a partir d’un registre d’élevage numérique). je dois pouvoir entrer les données sur mon iPhone or il est impossible d’actionner la macro (elle fonctionne bien depuis un ordi)
quelqu’un aurais peux être une astuce. un truc….
je précise que je ne connais pas grand chose en programmation et qu’un exemple de macro utilisable depuis 1 iPhone m’aiderais beaucoup
merci d’avance</p>[Apps-Script sheets] Première cellule et dernière cellule non-vide dans la ligne actuelle, message #2442722022-07-16T17:46:51+02:00jpanevel/@jpanevelhttps://zestedesavoir.com/forums/sujet/16370/apps-script-sheets-premiere-cellule-et-derniere-cellule-non-vide-dans-la-ligne-actuelle/?page=1#p244272<p>Waow, cela marche à merveille <img src="/static/smileys/svg/soleil.svg" alt=":soleil:" class="smiley"></p>
<p>Merci pour le code, et surtout les explications qui permettent de progresser.</p>
<p>J’avance bien sur mon projet, c’est cool <img src="/static/smileys/svg/smile.svg" alt=":)" class="smiley"></p>
<p>Avant de demander, je passe d’abord des heures à chercher.</p>
<p>Merci encore…</p>
<p>@ bientôt <img src="/static/smileys/svg/clin.svg" alt=";)" class="smiley"> </p>[Apps-Script sheets] Première cellule et dernière cellule non-vide dans la ligne actuelle, message #2442452022-07-15T11:10:40+02:00artragis/@artragishttps://zestedesavoir.com/forums/sujet/16370/apps-script-sheets-premiere-cellule-et-derniere-cellule-non-vide-dans-la-ligne-actuelle/?page=1#p244245<p>Ok, je vais donc tenter de te donner le code : </p>
<p>Premièrement <code>firstNotEmpty</code></p>
<div class="hljs-code-div hljs-code-js"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span></div><pre><code class="hljs language-js">
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">firstNotEmpty</span>(<span class="hljs-params">spreadsheet, row</span>)</span>{
<span class="hljs-keyword">const</span> dataRange = spreadsheet.getRange(row, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, spreadSheet.getLastColumn()).getData()[<span class="hljs-number">0</span>];
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">let</span> i=<span class="hljs-number">0</span>; i<dataRange.length; i++) {
<span class="hljs-keyword">if</span> (dataRange[i] && dataRange[i].trim()) {
<span class="hljs-keyword">return</span> spreadsheet.getRange(row, i, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>).getA1Notation();
}
}
<span class="hljs-comment">// si on n'a rien trouvé ça retournera undefined, il faut donc changer un peu le code principal</span>
<span class="hljs-comment">// on y reviendra</span>
}
</code></pre></div>
<p>Et maintenant, la même mais à l’envers pour trouver la dernière cellule</p>
<div class="hljs-code-div hljs-code-js"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span></div><pre><code class="hljs language-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">lastNotEmpty</span>(<span class="hljs-params">spreadsheet, row</span>) </span>{
<span class="hljs-keyword">const</span> dataRange = spreadsheet.getRange(row, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, spreadSheet.getLastColumn()).getData()[<span class="hljs-number">0</span>];
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">let</span> i=dataRange.length -<span class="hljs-number">1</span>; i>=<span class="hljs-number">0</span>; i--) {
<span class="hljs-keyword">if</span> (dataRange[i] && dataRange[i].trim()) {
<span class="hljs-keyword">return</span> spreadsheet.getRange(row, i, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>).getA1Notation();
}
}
}
</code></pre></div>
<p>Et la légère modification du code principale pour éviter les soucis</p>
<div class="hljs-code-div hljs-code-js"><div class="hljs-line-numbers"><span data-count="1"></span><span data-count="2"></span><span data-count="3"></span><span data-count="4"></span><span data-count="5"></span><span data-count="6"></span><span data-count="7"></span><span data-count="8"></span><span data-count="9"></span><span data-count="10"></span><span data-count="11"></span><span data-count="12"></span><span data-count="13"></span><span data-count="14"></span><span data-count="15"></span></div><pre><code class="hljs language-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">codePrincipal</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-comment">// code principal</span>
<span class="hljs-keyword">const</span> app = SpreadsheetApp.getActive();
<span class="hljs-keyword">const</span> spreadsheet = app.getActiveSpreadsheet();
<span class="hljs-keyword">const</span> row = app.getActiveRange().getRow();
<span class="hljs-keyword">const</span> first = firstNotEmpty(spreadsheet, row);
<span class="hljs-keyword">if</span> (!first) {
<span class="hljs-comment">// si la ligne était vide, un message a été affiché, on s'arrête là</span>
<span class="hljs-keyword">return</span>;
}
applyStyle(spreadsheet, first, lastNotEmpty(spreadsheet, row))
}
</code></pre></div>[Apps-Script sheets] Première cellule et dernière cellule non-vide dans la ligne actuelle, message #2442422022-07-15T00:27:30+02:00jpanevel/@jpanevelhttps://zestedesavoir.com/forums/sujet/16370/apps-script-sheets-premiere-cellule-et-derniere-cellule-non-vide-dans-la-ligne-actuelle/?page=1#p244242<p>Bonjour Artragis,</p>
<p>Je te remercie pour ta réponse et du temps que tu as consacré à mon problème.</p>
<p>Je t’avoue ne pas avoir un niveau suffisant pour coder cela malgré tes explications.</p>
<p>Il me manque en effet quelques billes.</p>
<p>J’ai donc parcouru ton tutoriel pour prendre un peu de niveau.</p>
<p>D’ailleurs, je trouve celui-ci très bien réalisé et te félicite pour ton travail et ton altruisme.</p>
<p>Bien à toi.</p>