Sur MacOS il existe plusieurs façons intégrées de regarder a dossier et faire en sorte que quelque chose soit fait automatiquement lorsque le contenu de la dossier surveillé changements.
- Le moyen le plus rapide et le plus simple peut être à utiliser Automator pour créer un Action des dossiers flux de travail . Toutefois, dans ce cas d'utilisation, je préfère la méthode suivante.
- Il y a également Configuration des actions du dossier dans lequel on peut attacher un AppleScript script à un dossier surveillé et ou également le gérer et ou un Action des dossiers flux de travail créé par Automator . C'est sur ce point que cette réponse se concentrera pour créer la Action des dossiers .
- Les moins conviviales, sans l'utilisation d'une utilitaire tiers est de créer manuellement une Agent de lancement et en utilisant
launchctl
sur Terminal pour le mettre en œuvre et le gérer, et ne sera pas couvert par le présent document.
Normalement, quand on regarde un dossier l'assigné action/script est déclenché en tant que contenu de la dossier surveillé change et il fait son travail immédiatement et c'est fini. Il ne se soucie pas de savoir si le Action des dossiers n'a pas été déclenché à nouveau pour ensuite faire autre chose. En tant que tel, cela a présenté un regard intéressant sur la façon d'envoyer par exemple un e-mail après, par exemple, 90 secondes à partir du moment où le dernier balayage a été effectué. document du lot de balayage actuel est ajouté à la dossier surveillé et ne font rien lorsque documents en sont retirés.
À cette fin, la solution présentée ici comporte quelques éléments de travail différents pour la mettre en place. Cependant, une fois qu'elle est mise en place, elle est en pilotage automatique par la suite...
-
AppleScript shell script déclenché par le AppleScript script attaché à la Action des dossiers .
-
Terminal pour créer le AppleScript shell script exécutable fichier .
-
TextEdit pour modifier le AppleScript shell script exécutable fichier .
-
Éditeur AppleScript pour créer le AppleScript script attribué à la Action des dossiers .
-
Configuration des actions du dossier une interface graphique application pour configurer et gérer le Action des dossiers au besoin.
-
Courrier pour gérer l'envoi de l'email.
AppleScript shell script exécutable fichier
-
Créer le AppleScript shell script exécutable fichier sur Terminal .
-
Sur Terminal exécutez ce qui suit commandement composé :
f='scandone'; touch "$f"; open -e "$f"; chmod +x "$f"
- Conseil : Copiez et collez le commandement composé en Terminal puis appuyez sur : enter
-
Ensuite, dans l'espace vide ouvert scandone document dans, par exemple TextEdit copier et coller le exemple AppleScript code montrée plus bas, dans le cadre de l'opération.
-
Ensuite, apportez les modifications appropriées à la valeur de chaque property
en haut de l'écran script puis enregistrez et fermez la page scandone document .
-
Notez que, par défaut, le <strong>AppleScript </strong><em>shell script </em>est créé dans le <em>Racine </em>de son <strong>Accueil </strong><em>dossier </em>. Comme il ne sera pas nécessaire d'exécuter directement à partir de <strong>Terminal </strong>il n'est pas nécessaire qu'il se trouve à un endroit défini dans le cadre de l'accord de coopération. <code>PATH</code> transmis à la <em>coquille </em>. Sur <strong>OS X Lion </strong>J'ai créé un <em>dossier </em>nommé <code>bin</code> au sein de la <em>Racine </em>de mon <strong>Accueil </strong><em>dossier </em>et a déplacé le <em>script </em>là, même si ce n'est pas un <em>fichier binaire </em>.
AppleScript script à attacher à la Action des dossiers
-
Sur Éditeur AppleScript créer un nouveau document en ajoutant le exemple AppleScript code montré plus bas après le exemple AppleScript code utilisé pour le AppleScript shell script .
- Réglage de
'/path/to/scandone'
à l'actuel Chemin d'accès POSIX de la AppleScript shell script exécutable fichier créé à partir des indications données plus haut.
-
Sauvegarder le AppleScript script comme, par exemple Watch Scanning.scpt sur ~/Library/Scripts/Folder Action Scripts
notant que le ../Scripts/Folder Action Scripts
dossier n'existe pas par défaut. S'il n'existe pas déjà lors d'une utilisation précédente, il suffit d'ouvrir le fichier Terminal et exécutez ce qui suit commande :
mkdir -p -m 0700 "$HOME/Library/Scripts/Folder Action Scripts"
- Conseil : Copiez et collez le commande en Terminal puis appuyez sur : enter
Configuration des actions du dossier
-
Ouvrir Configuration des actions du dossier en utilisant l'une des méthodes mentionnées dans le Notas: section ci-dessous, à partir de : Pour faire remonter Configuration des actions du dossier sur OS X Lion
-
Ajouter le dossier surveillé et AppleScript script en utilisant le [+] bouton de chaque côté de la Configuration des actions du dossier fenêtre . Ajout de la dossier surveillé du côté gauche, et le AppleScript script par exemple Watch Scanning.scpt du côté droit de la fenêtre .
-
Sur le Configuration des actions du dossier fenêtre si le [Activer l'action sur les dossiers case à cocher n'est pas coché, assurez-vous de le faire.
En supposant que Courrier est déjà configuré avec votre e-mail et fonctionne normalement, alors vous avez terminé et vous êtes prêt à commencer la numérisation. (Évidemment, faites d'abord quelques tests en ajoutant n'importe quel vieux compte fichier dans le dossier surveillé comme s'il avait été fait par le scanner).
Comment ça marche
Lorsqu'un fichier est ajouté à la dossier surveillé le site AppleScript script attaché à la dossier surveillé sur Configuration des actions du dossier exécute le AppleScript script qui, dans ce cas, génère le AppleScript shell script exécutable fichier puis cesse d'attendre que le Action des dossiers pour être déclenché à nouveau.
Le spawned AppleScript shell script exécutable fichier puis compte le nombre de fichiers dans le dossier surveillé , attend l'ex. 90 secondes et compte ensuite le nombre de fichiers dans le dossier surveillé à nouveau. Ensuite, si le compte précédent est égale à la compte actuel le site AppleScript shell script envoie un e-mail via Courrier l'interface graphique application et non le ligne de commande mail
sinon le shell script se termine.
De toute évidence, chaque fois que le Action des dossiers est déclenché, il va engendrer une autre occurrence de l'élément AppleScript shell script Cependant, lors de mes tests, je n'ai pas vu ce problème. C'était également le moyen le plus simple auquel j'ai pensé pour atteindre l'objectif.
La chose à garder à l'esprit est que le temps total le site shell script attend entre la vérification de la nombre de fichiers doit évidemment être supérieure à la temps qu'il faut pour scanner le document et le sauvegarder dans le dossier surveillé et comprend également une quantité appropriée de secondes de tampon pour que la timing travaux.
AppleScript shell script exécutable fichier
Exemple AppleScript code :
#!/usr/bin/osascript
property waitTimeSeconds : 90
property watchedFolder : "/path/to/WatchedFolder"
property toName : "John Doe"
property toEmail : "johndoe@domain.com"
property |Subject| : "Finished Scanning"
property |Content| : "Finished Scanning"
property quitMail : false
set previousFileCount to countFilesInWatchedFolder()
delay waitTimeSeconds
set currentFileCount to countFilesInWatchedFolder()
if previousFileCount = currentFileCount then
tell application "Mail"
run
set theMessage to ¬
make new outgoing message with properties ¬
{subject:|Subject|, content:|Content|}
tell theMessage to ¬
make new to recipient at end of ¬
to recipients with properties ¬
{name:toName, address:toEmail}
send theMessage
end tell
if quitMail then
delay waitTimeSeconds
quit application "Mail"
end if
end if
on countFilesInWatchedFolder()
tell application "System Events" to ¬
return count files of folder watchedFolder
end countFilesInWatchedFolder
AppleScript script à attacher à la Action des dossiers
Exemple AppleScript code :
on adding folder items to
do shell script "'/path/to/scandone' &>/dev/null &"
end adding folder items to
on removing folder items from
return
end removing folder items from
Notas:
En exemple AppleScript code montré ci-dessus, a été testé de manière approfondie dans scriptÉditeur ( Éditeur AppleScript sur OS X Lion ) et en tant que AppleScript shell script et Courrier sous MacOS Catalina avec Langue et région paramètres dans Préférences du système réglé sur Anglais (US) - Primaire et a fonctionné pour moi sans problème 1 .
- 1 Assume les paramètres nécessaires et appropriés dans <strong>Préférences du système </strong>> <strong>Sécurité et confidentialité </strong>> <strong>Vie privée </strong>ont été fixés/réglés selon les besoins.
Comme le OS X Lion Le système sur lequel je l'ai testé n'est pas connecté à un réseau de télécommunications. réseau je n'ai pas pu envoyer le message sortant dans la base de données de l'entreprise. Courrier Cependant, les instructions de base fonctionnent de la même manière que dans le cas de l'application MacOS Catalina . C'est-à-dire sans envoyer un e-mail sur OS X Lion lorsque le contenu de la dossier surveillé changé, il a fait tout ce qui était programmé pour faire.
Pour faire remonter Configuration des actions du dossier sur OS X Lion ce n'est pas aussi facile que de faire des tests dans le cadre de l'enquête. MacOS Catalina . Sur MacOS Catalina , faire apparaître Spotlight et commencer à taper Configuration des actions du dossier permet de cliquer pour l'ouvrir. Ce n'est pas le cas dans OS X Lion . Sur OS X Lion J'utilise Terminal et a exécuté ce qui suit commande :
open -a 'Folder Actions Setup'
Sur OS X Lion elle est située à : /System/Library/CoreServices/Folder Actions Setup.app
Sur OS X Lion , Configuration des actions du dossier peut également être ouvert à partir de l script menu sur le barre de menu si oui, configurez dans Éditeur AppleScript > Préférences en vérifiant le [Afficher le menu script dans la barre de menu case à cocher puis de la script menu sur le barre de menu , Actions des dossiers > Configurer les actions du dossier ouvre Configuration des actions du dossier .
Sur OS X Lion le prédécesseur de Préférences du système > Sécurité et confidentialité > Vie privée > Accessibilité dans, par exemple MacOS Catalina c'est Préférences du système > Accès universel > [Permettre l'accès aux appareils fonctionnels . Dans mes essais, je n'ai pas eu besoin de le faire vérifier (YMMV).
Dans le exemple AppleScript code si property quitMail : false
est réglé true
elle le fera quitter Courrier après le même valeur de la valeur de waitTimeSeconds
. Gardez à l'esprit que si le e-mail adresse utilisé pour cette Action des dossiers a normalement beaucoup de trafic et Courrier n'a pas déjà été ouvert, vous voudrez peut-être définir l'option valeur pour le delay
commande dans le if quitMail then
bloc manuellement et supérieure à la valeur pour waitTimeSeconds
. Cela permet d'éviter une situation de concurrence entre réception du courrier et envoi de courrier si le premier se produit avant le second. Vous ne voulez évidemment pas Courrier a quitter avant le message a été envoyé si une grande quantité est entrante, cela ralentit la message sortant .
Note : Le <em>exemple </em><strong>AppleScript </strong><em>code </em>est juste cela et sans aucune inclusion <em>gestion des erreurs </em>ne contient pas d'autres <em>gestion des erreurs </em>comme il se doit. C'est à l'utilisateur qu'il incombe d'ajouter toute <em>traitement des erreurs </em>selon ce qui est approprié, nécessaire ou souhaité. Consultez le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>essayez </strong></a><em>déclaration </em>et <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>erreur </strong></a><em>déclaration </em>dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du langage AppleScript </strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec des erreurs </strong></a>. En outre, l'utilisation de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retarder </strong></a><em>commande </em>peut être nécessaire entre les événements, le cas échéant, par ex. <code>delay 0.5</code> avec le <em>valeur </em>de la <em>retarder </em>définis de manière appropriée. .