Je cherche un moyen d'ajouter un champ calculé simple dans un formulaire Google qui dépendra des valeurs des autres champs.
Le premier champ est un champ de prix simple quantity * price = total_price
où la quantité est un champ numérique saisi par l'utilisateur.
Le deuxième champ est une date de fin now() + X months
où X est sélectionné par l'utilisateur.
J’ai jeté un coup d’œil aux didacticiels de Google et n’ai trouvé que des addons qui, d’après ma compréhension, ont une forme large, où je cherche quelque chose qui ressemble davantage à un champ de formulaire personnalisé.
La meilleure solution serait de calculer les champs lorsque l'utilisateur modifie la valeur de l'autre entrée, mais un simple texte dans la page de confirmation convient également.
Je vous serais reconnaissant si quelqu'un pouvait me diriger dans la bonne direction. Merci.
L'écriture de script uniquement peut affecter la création et le traitement post-soumission d'un formulaire. Vous ne pouvez apporter aucune modification au formulaire "en direct" actuellement consulté par l'utilisateur. Ce que vous pouvez faire est d’envoyer un courrier électronique à l’utilisateur une fois le formulaire soumis avec un résumé calculé. Vous pouvez inclure un lien vers getEditResponseUrl () s'ils voient des erreurs.
Le calcul en direct basé sur les entrées d'un Google n'est pas pris en charge. L'écriture de script peut résoudre le problème en partie comme mentionné dans les réponses ci-dessus.
Certaines alternatives vous permettent de créer des champs de formulaire, puis de fournir un nom de variable pour chaque champ. Vous pouvez utiliser ces variables pour calculer.
Clappia ( www.clappia.com ) est l’une de ces solutions.
Disclaimer: Je suis associé à Clappia.
J'ai eu ce problème également. Je devais créer un tableau de bord en utilisant les réponses provenant d’un formulaire Google. Le problème: lorsque vous utilisez des formules dans une colonne à côté de la feuille où les réponses sont envoyées, Google insère une nouvelle ligne mais ne réplique pas la formule. finissez par copier et coller la formule, encore et encore.
Pour résoudre ce problème, j'ai utilisé un script qui copie la cellule contenant la formule et la colle dans toutes les lignes contenant les réponses.
Le script est assez simple, vous devez d’abord ouvrir l’éditeur de script dans le menu "Outils", puis coller le code ci-dessous. Vous devez seulement "appeler" les feuilles avec un nom dans le code, puis marquer les colonnes contenant les formules. Dans ce cas, hoja1 est "BD ingresos" et hoja2 est "DB gastos".
Dans ce cas, les feuilles où j’ai des formulaires déployant des réponses sont "BD ingreso" et "BD gastos", les colonnes où j’ai calculé quelque chose sont A, B, C, D et E dans "BD ingresos" comme dans "BD Gastos ".
(noms en espagnol, désolé)
// Activar la hoja actual
var ss = SpreadsheetApp.getActiveSpreadsheet();
// se guarda hoja1
var hoja1 = ss.getSheetByName("BD ingreso");
var hoja2 = ss.getSheetByName("BD gastos")
function actualizar() {
// obtener ultima fila de la hoja
var ultimaFila = hoja1.getLastRow();
rellenarColumna("A",ultimaFila,hoja1);
rellenarColumna("B",ultimaFila,hoja1);
rellenarColumna("C",ultimaFila,hoja1);
rellenarColumna("D",ultimaFila,hoja1);
rellenarColumna("E",ultimaFila,hoja1);
// obtener ultima fila de la hoja
var ultimaFila = hoja2.getLastRow();
rellenarColumna("A",ultimaFila,hoja2);
rellenarColumna("B",ultimaFila,hoja2);
rellenarColumna("C",ultimaFila,hoja2);
rellenarColumna("D",ultimaFila,hoja2);
rellenarColumna("E",ultimaFila,hoja2);
}
function rellenarColumna(pivote, ultimaFila,hojaTrabajo)
{
//-------------------------------------------------------------
//celda que contiene la información que se va a pegar.
var celdaCopiarFormula = hojaTrabajo.getRange(pivote+"2");
//obtener valor de dicha celda
var valorCeldaCopiarFormula = celdaCopiarFormula.getFormula();
//modificar rango para que pegue la información desde la ubicacion enviada hasta la ultima fila
var rangoTotal = pivote + "2:" + pivote + ultimaFila;
//definir ubicacion en donde se va a pegar la informacion
var destinoPegado = hojaTrabajo.getRange(rangoTotal);
destinoPegado.setFormula(valorCeldaCopiarFormula);
}