J'ai une feuille de Google qui comprend un script qui doit être exécuté lorsque vous cliquez sur un bouton. La méthode recommandée pour ce faire (pour autant que je sache) consiste à insérer une image, puis à associer un script à l'image en question.
Cela fonctionne très bien tant que j'ouvre la feuille sur mon bureau. Toutefois, si j'ouvre la feuille dans l'application Android Google Sheet, l'image n'apparaît tout simplement pas. Autant que je sache, ce (manque de) comportement n’est documenté nulle part, mais j’ai trouvé un certain nombre de personnes atteintes du même problème.
Je me demandais comment je contournerais ce problème. Ai-je oublié quelque chose d'évident qui rendrait mes images visibles dans l'application Android? Ou existe-t-il un autre moyen simple d’ajouter un déclencheur de script à une feuille qui fonctionnera sur mobile?
Il semble que ni les images ni les éléments de menu personnalisés ne fonctionnent actuellement dans l'application Sheets Android. Je suggère de créer un "menu de fonction" dans la feuille de calcul. Par exemple:
onEdit
, exécutée à chaque édition, vérifie si le contenu de B1 a changé. Si c'est le cas, il exécute la fonction appropriée.Voici mon code, avec deux fonctions incluses à des fins de démonstration:
function onEdit(e) {
if (e.range.getA1Notation() == 'B1') {
if (/^\w+$/.test(e.value)) {
eval(e.value)();
e.range.clear();
}
}
}
function insertSomething() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(2,3).setValue('inserted something');
}
function convertSomething() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(3,3).setValue('converted something');
}
La condition /^\w+$/.test(e.value)
est juste pour vérifier que nous avons une chaîne non vide et que nous n'exécutons pas de code malveillant que quelqu'un a en quelque sorte placé dans la cellule B1. Une fois que la fonction est envoi avec eval(e.value)();
, le contenu de B1 est effacé. On peut choisir de relancer la même fonction ou une autre.
Comme preuve de concept, voici des captures d'écran de l'application. Capture d'écran 1: sélection d'une fonction
Capture d'écran 2: après l'exécution de la fonction