De temps en temps, lorsque vous essayez de vider la corbeille de votre Mac, vous pouvez avoir un message d’erreur vous disant que vous n’avez pas les droits de supprimer les fichiers. C’est gênant, d’autant plus que l’erreur ne va pas se résoudre toute seule. Pour moi, c’est d’autant plus gênant que cela cause une erreur lorsque Hazel essaie de faire le ménage de la corbeille. C’est pourquoi j’utilise un script qui se déclenche chaque jour pour rendre tous les fichiers de la corbeille effaçables.

set thePath to "/Users/yourhomefolder/.Trash/"
do shell script "chflags -R nouchg '" & thePath & "'"
do shell script "chown -R yourusername '" & thePath & "'" user name "yourusername" password "yourpassword" with administrator privileges
do shell script "chmod -R 777 '" & thePath & "'"

Il faut remplacer yourhomefolder par le nom de votre dossier utilisateur, yourusername par le nom d’utilisateur du compte administrateur, et yourpassword par le mot de passe administrateur. À ma connaissance, il n’existe malheureusement pas de moyen d’exécuter le script sans spécifier ces informations. Si vous en avez une, je suis preneur de l’info.

Ensuite, j’ai mis ce script dans Keyboard Maestro, qui le déclenche tous les jours à minuit et 1 minute. Voici le résultat :

Make Trash Files Deletable

Hazel fait partie de mes outils d’automatisation indispensables avec Keyboard Maestro, Quicksilver et AppleScript. Je vais montrer ici comment ajouter automatiquement à un nom de fichier la date à laquelle celui-ci a été ajouté. Cela peut être très utile, par exemple, pour classer facilement les documents scannés par date de réception.

Pour cela, commencez par ajouter à Hazel le dossier contenant les documents à renommer.

Ensuite, créez la règle suivante :

Hazel Add Date Filename

Hazel est un programme très puissant, mais qui peut avoir des conséquences désastreuses s’il est mal utilisé. C’est pourquoi j’ajoute pratiquement toujours une condition de « sécurité ». Ici, je ne traite que les fichiers reçus depuis moins d’une heure, pour éviter qu’en cas de problème Hazel ne décide de renommer de nouveau tous les fichiers, ce qui aurait pour conséquence d’ajouter une deuxième fois la date au nom du fichier. Au pire, seuls les fichiers reçus dans la dernière heure seraient affectés par le problème.

La deuxième partie définit la règle qui renomme le fichier. Il est possible de définir le format de la date. Pour trier les fichiers par date, il vaut mieux utiliser le format YYYY-MM-DD, par exemple 2018-12-03.

Supprimer des fichiers en masse dans Slack

J’ai un ami qui utilise la version gratuite de Slack pour sa startup. En discutant, il m’a évoqué un problème auquel il faisait face. Il était obligé de supprimer les fichiers un à un lorsqu’il atteignait la limite de place.

Heureusement, comme toujours quelqu’un a inventé une solution. Elle est disponible à l’adresse ci-dessous :

https://bulk-delete-slack-files.herokuapp.com

Mise à jour du 2018-12-07 : le lien vers la page pour générer le « token » (jeton) Slack n’est plus bon. Vous pouvez utiliser ce lien tant qu’il fonctionne encore : https://api.slack.com/custom-integrations/legacy-tokens

Si vous ne faites pas confiance au site, vous pouvez utiliser un script Ruby disponible à l’adresse ci-dessous :

https://gist.github.com/jamescmartinez/909401b19c0f779fc9c1

Si vous regardez dans les commentaires de la page, vous verrez que quelqu’un a également créé une version du script en Python.

Historique : 2018-12-07 : ajout du lien vers la page pour générer le token.

Il est possible de lancer une macro Visual Basic depuis un script AppleScript. Comme souvent, il n’y a pas vraiment d’exemple, il faut donc tâtonner pour trouver comment cela marche. Aussi pour vous éviter la galère je vous donne la méthode.

Dans l’exemple ci-dessous, j’utilise AppleScript pour lancer une macro Visual Basic qui prend deux nombres comme paramètres.

	tell application "Microsoft PowerPoint"
		run VB macro macro name "SetShapePosition" list of parameters {200, 100}
	end tell

Un exemple concret : lancer une macro Visual Basic depuis Keyboard Maestro

Visual Basic est beaucoup, beaucoup, beaucoup plus performant qu’AppleScript pour exécuter des actions dans PowerPoint, comme par exemple ajouter une forme sur chaque slide. C’est donc le langage que j’utilise en priorité pour créer des automatisations. De l’autre côté, Keyboard Maestro permet de créer des palettes de commandes parfaitement intégrées à l’interface du Mac. Grâce à la commande AppleScript « run VB macro » je peux faire communiquer les deux facilement.

1. Créer la macro à déclencher dans PowerPoint

Voici par exemple deux macros Visual Basic. La première, CopyShapePosSize, copie la position et la taille de l’objet sélectionné. La deuxième « colle » la position et la taille copiée à l’objet sélectionné. C’est génial si par exemple vous devez avoir plusieurs zones de texte avec exactement la même taille et position sur toute une série de slides.

N’oubliez pas de déclarer les variables « Public » au début, car ce sont elles qui vont se « souvenir » de la taille et de la position des objets sélectionnés.

En théorie, il est même possible de sélectionner plusieurs objets : on sélectionne A, B et C (dans cet ordre), on copie leurs positions et leurs tailles, puis ont sélectionne D, E et F et D hérite de la position et taille de A, E de B et F de C, mais je ne suis pas sûr que ça marche bien, car je ne l’utilise jamais et du coup je ne l’ai jamais vraiment testé à fond.

Public pLeft() As Single
Public pTop() As Single
Public pWidth() As Single
Public pHeight() As Single
Public pCount As Integer

' CopyShapePosSize
Sub CopyShapePosSize(theParam As String)
    Dim theShape As Shape
    
    ReDim Preserve pPPSSTextAlignHorizontalYes(pPPSSStylesCount)
    
    theCount = ActiveWindow.Selection.ShapeRange.Count
    ReDim pLeft(theCount)
    ReDim pTop(theCount)
    ReDim pWidth(theCount)
    ReDim pHeight(theCount)
    pCount = theCount
    
    For i = 1 To theCount
        Set theShape = ActiveWindow.Selection.ShapeRange(i)
        pLeft(i) = theShape.Left
        pTop(i) = theShape.Top
        pWidth(i) = theShape.width
        pHeight(i) = theShape.height
    Next
    
End Sub


' PasteShapePosSize
Sub PasteShapePosSize(theParam As String)
    Dim theShape As Shape
    
    theCount = ActiveWindow.Selection.ShapeRange.Count
    If theCount > pCount Then
        theCount = pCount
    End If
    
    If theCount > 0 Then
        For i = 1 To theCount
            Set theShape = ActiveWindow.Selection.ShapeRange(i)
            theShape.Top = pTop(i)
            theShape.Left = pLeft(i)
            theShape.width = pWidth(i)
            theShape.height = pHeight(i)
        Next
    End If
    
End Sub

2. Créer la macro de déclenchement dans Keyboard Maestro

Voici un exemple de ce à quoi peut ressembler la palette dans Keyboard Maestro. On sélectionne un objet A dans PowerPoint, puis on clique sur Copy position and size. Puis on sélectionne un objet B et on clique sur paste position and size. Magie, la position et la taille de l’objet B sont exactement les mêmes que celles de l’objet A !

Keyboard Maestro Powerpoint Palette

Pour arriver à ce résultat, commencez par créer une « palette » qui sera active uniquement dans PowerPoint.

Keyboard Maestro Powerpoint Palette Step 1

Ensuite, créez les deux macros qui vont lancer CopyShapePosSize et PasteShapePosSize. Voici l’exemple pour la macro qui lance CopyShapePosSize, mais c’est exactement la même chose pour l’autre macro.

Keyboard Maestro Powerpoint Palette Step 2

Et voilà, fini de galérer à essayer d’aligner chaque élément manuellement pour qu’ils soient identiques sur tous les slides. De toute façon, pour diverses raisons, avec PowerPoint c’est impossible de garantir que la position et la taille sont parfaitement identiques en essayant de le faire manuellement. Cette macro règle le problème.

Le nombre de possibilités est pratiquement infini. J’ai des dizaines de macros similaires qui permettent de gagner un temps fou.

Combien de consultants et de cadres passent littéralement des années de leur vie professionnelle sur PowerPoint ? Pourtant, combien d’entre eux ont suivi une formation pour utiliser PowerPoint efficacement ? Pratiquement aucun. Un consultant a besoin de formation en stratégie, en management, en communication. Mais PowerPoint ? Vous voulez rire ? Pourquoi pas des cours d’informatique ou de dactylo tant qu’on y est ?

Et pourtant… Lorsqu’on sait taper à dix doigts, que l’on n’est pas bloqué par les petits tracas informatiques, et que l’on sait correctement utiliser PowerPoint (utilisez les masques de diapositives au lieu d’aligner chaque élément à la main !!!), créer une présentation PowerPoint prend littéralement deux fois moins de temps.

Laissez-moi le dire autrement. Au lieu de mettre 2 jours pour créer une présentation, le consultant mettrait 1 jour et gagnerait 1 jour de vacances gratuit. Pas mal non ?