Le script Google Sheet ne s'exécute pas complètement

Aug 27 2020

J'utilise un formulaire Google pour déclencher ce script.
Lorsque j'exécute le script avec le bouton Lecture, cela fonctionne parfaitement.
Lorsque je laisse le déclencheur onsubmit l'exécuter, la case à cocher se remplit correctement, mais pas la date setValue.
J'ai aussi essayé d'utiliser setFormulamais j'obtiens le même résultat.

function AddCheckBox_toSchoolLunchForm(F) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1")
  var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
  var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
  var range = sheet.getRange(sheet.getLastRow(), 8);
  range.clearContent();
  range.setDataValidation(rule);
  var FormulaCell = sheet.getRange(sheet.getLastRow(), 10);
  FormulaCell.setFormula("=DATEVALUE(A" + (sheet.getLastRow()) + ")");
}

L'objectif final est de remplir la colonne J avec la date formatée de prise de vue de la colonne A chaque fois que le formulaire est soumis.
J'ai besoin de ce format pour exécuter un countIfs sur une autre feuille.

Une autre option serait d'incorporer d'une manière ou d'une autre une balise de format dans cette commande CountIfs afin qu'elles correspondent.

=COUNTIFS('Form Responses 1'!J:J,A2,'Form Responses 1'!D:D,B2)

Réponses

ziganotschka Aug 27 2020 at 21:25

RÉPONSE MIS À JOUR

Si vous rencontrez des problèmes lors de l'exécution d'une fonction sur un déclencheur alors qu'elle fonctionne comme prévu sans déclencheur, vérifiez les points suivants:

  • Pour les fichiers / données de formulaire lourds, cela peut être un retard dans le remplissage de la feuille avec de nouvelles données de formulaire.

    • Pour éviter les conflits, laissez à la feuille de calcul le temps de remplir la nouvelle ligne avant de récupérer sheet.getLastRow()ou d'accéder aux données de la feuille.

    • Vous pouvez facilement doter par exemple Utilities.sleep () .

  • Vérifiez que votre déclencheur a été correctement installé. Pour cela, vérifiez que

    • le type de déclencheur est correct
    • le déclencheur est lié à la fonction correcte
    • éviter les conflits en créant un nouveau déclencheur lors du changement de nom de la fonction.
  • Vérifiez que le problème n'est pas dû à des restrictions de déclenchement

  • Il s'agit d'une source d'erreur courante lors de l'utilisation de déclencheurs simples.

  • Vérifiez que le compte sous l'autorisation duquel le déclencheur s'exécute dispose des autorisations nécessaires pour modifier la feuille / la plage. Il est important de vérifier si le propriétaire du déclencheur est une autre personne que la personne qui exécute le script manuellement.

  • Notez que car setFormula()il n'est pas nécessaire d'incorporer le =dans la formule

  • Notez que DATEVALUE()ne renverra le résultat attendu que lorsque la cellule est correctement formatée en tant que date