Nous avons utilisé Apple Numbers, ce qui semble avoir une durée un peu meilleure que Google (soit ça, soit il me manque quelque chose). Dans Apple Numbers, si je tape dans une cellule au format "durée": 90m
, Il la convertira automatiquement en: 1h 30m
,
Dans Google Sheets, lorsque je tape 90m
, Il semble convertir l'entrée en "texte" et la déplacer vers la gauche de la cellule. Si je tape: 1h 30m
La même chose se produit. Si je tape: 00:90:00
, Il le convertit en: 1h 30m
, 1:30
, Donne également le même résultat. Si vous saisissez 1h 30m
, L'affichage exact qu'il est censé montrer ne le reconnaîtra pas comme une durée, mais comme du texte.
Voici un exemple rapide de ce dont je parle: Typed a été formaté comme ="@"
Afin qu'il conserve exactement comment je l'ai tapé dans la colonne de droite:
Nous entrons donc des centaines de lignes par jour. entrer tout cela au format xx:xx
est une énorme douleur dans le cul. Existe-t-il un moyen pour que Google Sheets reconnaisse 90m
, Comme 90 minutes, et le mette dans le format dans lequel il est programmé?
À l'heure actuelle, Google Sheets n'inclut pas de moyen de personnaliser l'attribution automatique du type de données, mais il est possible d'utiliser Google Apps Script pour convertir automatiquement les entrées d'un type à un autre, mais il a certaines limites, mais commençons par la solution la plus simple, puis sur un autre Q & A, nous pourrions parler de la façon de contourner les limitations connues et les problèmes qui se posent pour les cas d'intérêt général.
Il est possible qu'un module complémentaire existe déjà. Si vous avez besoin d'une recommandation, posez une question sur Software Recommendations
Étapes générales
#unit
aux durées GoogleCréer un projet de script d'applications
REMARQUE: si c'est votre premier projet et que vous n'avez pas encore prévu d'en créer plusieurs, le nom pourrait être n'importe quoi, mais un nom descriptif court est toujours préférable
Ajoutez un déclencheur simple lors de l'édition.
function onEdit(e){
}
Ajoutez le code JavaScript
Complétez la fonction d'édition simple pour retourner le résultat dans la feuille de calcul
Pour plus de commodité, j'ai ajouté le code des deux dernières étapes dans un seul bloc de code.
function onEdit(e) {
var duration = stringToDuration(e.value);
if(e.value !== duration) {
e.range.setValue(duration);
e.range.setNumberFormat('[h]:mm'); // Here you can set the number format to use
}
}
/**
* Converts a string to a Google Sheet duration value
*
* @param {String} input The string to be converted
* @returns An Integer if the input format is supported otherwise returns the input
*/
function stringToDuration(input){
if(!typeof input === 'string') return input;
var date = new Date(0);
var match = input.match(/^(\d.*)(.)/);
var value = parseFloat(match[1]);
var isDuration = true;
switch(input[2]){
case 'm':
date.setMinutes(value);
break;
case 'h':
date.setHours(value);
break;
default:
output = input;
isDuration = false;
}
var output;
if(isDuration) {
var oneDayInMS = 24*60*60*1000;
output = date.getTime() / oneDayInMS;
} else {
output = input;
}
return output
}
[~ # ~] remarques [~ # ~]
#m
(comme 90m) et #h
(comme 1,5 h). Pour une solution complète, adaptez le code d'une bibliothèque JavaScript comme moment.js.