Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

タグ: Mail

新発売:Mail.app Scripting Book with AppleScript

Posted on 1月 6 by Takaaki Naganoya

Piymaru Softwareによる電子書籍の70冊目は、AppleScript対応アプリケーション徹底解説シリーズの第6弾。

macOS上の主要アプリケーション、FileMaker Pro、ミュージック.app、Webブラウザ、iWork(Keynote、Pages、Numbers)、CotEditorときて、ご要望の多かった「メール」(Mail.app)についてのScripting本です。macOS 13.1+Mail.app v16対応。PDF 369ページ+サンプルScript Zipアーカイブで構成されています。

→ 販売ページ

本書は、Mail.appのAppleScriptによるScriptingについて基礎からハイ・テクニックまで、詳細にまとめた決定版です。

メールの詳細な情報取得や送信、ファイル添付送信、メールのスレッドをマインドマップ風に可視化して表示したり、REST API経由で高速メール配信サービスを用いた送信まで。幅広く実用的なメール関連のAppleScriptのノウハウをご紹介しています。

ずいぶん時間をかけて書いた本で、あとから企画が出た数冊の本が追い抜いていました。CotEditor本も、あとから企画したものの、あちらが先に完成しました。とにかくアプリケーションの規模が大きく、機能が多く、試しておくべき機能が多いので、とにかく時間がかかるんですね。実際、年末年始も書いていました。

以前から(2004年ぐらいから)受信メールのサブフォルダへの再仕分けScriptを運用しており、いまも利用していますが、これを添付しています。

また、選択したメールスレッドのマインドマップ形式の可視化Scriptも、別途アプリケーションをインストールしなくても利用できるものを添付しています。

SendGridのREST APIを呼び出して超高速にメール送信を行うScriptは、あんまり速いので腰が抜けるほどですが、これも一見の価値あるものでしょう。

Numbersの表に入れたデータをもとに、メールの文面にデータを差し込んで送信するScriptも添付しているので、年末年始のごあいさつなどに威力を発揮することでしょう。

■■目次

■初級

スクリプトエディタを起動しよう
 スクリプトエディタを起動しよう!
 スクリプトエディタのヘルプ
 色設定を変えてみよう!
 スクリプトを入力してみよう
 スクリプトを保存しよう
 スクリプトを実行しよう(1/2)
 スクリプトを実行しよう(2/2)
 セキュリティとプライバシー
 プライバシーとセキュリティ(13.x以降)
 セキュリティとプライバシー>プライバシー
 プライバシーとセキュリティ(macOS 13)

メール.appを起動しよう
 メール(Mail.app)を指定
 メール.appを起動
 メール.appを終了
 メール.appのAppleScript用語辞書の調べ方
 メニュー項目や画面強制操作の調べ方
 メール.appの詳細仕様について

メール.appの情報を取得しよう
 メール.appの名前を取得
 メール.appのバージョンを取得
 メール.appのプロパティ項目と内容(1/2)
 メール.appのプロパティ項目と内容(2/2)

選択中のメールボックス、メールを取得
 selected mainboxes=選択中のメールボックス
 selected messages=選択中のメール
 selection=選択中のメッセージを取得
 メールボックスのプロパティ項目と内容

メール情報の取得
 メッセージ(メール)の内容を取得
 メッセージ(メール)のソースを取得
 メッセージ(メール)の各種情報を取得
 メッセージのプロパティ項目と内容
 メッセージのプロパティ項目と内容
 メッセージのプロパティ項目と内容

条件に合ったメールの抽出
 条件に合うメッセージを取得

メールアカウント情報
 メールアカウントは複数存在可能
 accountオブジェクトの詳細情報を取得
 アカウントのプロパティ項目と内容①
 アカウントのプロパティ項目と内容②

メールアドレスを取り出す
 文字列からメールアドレスと氏名を抽出
 選択中のメッセージからメールアドレスと氏名を抽出

シグネチャ(署名)
 設定>署名で「署名」を管理
 署名から情報を取得
 アプリケーションの選択中署名情報
 署名の属性値の書き換え(名称、本文)

スクリプトメニューからの操作
 スクリプトメニューからの操作①
 スクリプトメニューからの操作②
 スクリプトメニューからの操作③

プリントアウト
 メール.appから印刷出力(GUI側)
 AppleScriptによる印刷
 AppleScript(GUI Scripting)による印刷

■中級

アカウントを指定しての新着メール確認
 メールアカウント種類ごとのメール確認
 新着メール確認スケジュールの設定/停止

SMTPサーバー
 SMTPサーバー情報の取得
 指定アカウントのSMTPサーバー設定を切り替え
 SMTPサーバーのプロパティ項目と内容

新規メール作成
 メッセージの新規作成

メール送信
 メッセージの新規作成+送信
 GUI側で作成していたメールの送信①
 GUI側で作成していたメールの送信②

添付ファイルつきメール送信
 メッセージの新規作成+ファイル添付+送信
 メッセージの新規作成+アーカイブファイル添付+送信①
 メッセージの新規作成+アーカイブファイル添付+送信②

メールの添付ファイルを処理
 選択中のメールの添付ファイルを保存
 選択中のメールの添付ファイルの種別を集計①
 選択中のメールの添付ファイルの種別を集計②
 選択中のメールに添付ファイルがあれば背景色を赤く変更

メール返信
 選択中のメールへの返信①
 選択中のメールへの返信②

メール転送(Forward)
 選択中のメールの転送(forward)①
 選択中のメールへの転送②

メールのリダイレクト
 選択中のメールの非破壊転送(redirect)①

メールボックスへのアクセス
 特別なメールボックスのオブジェクト
 特別なメールボックスへのアクセス
 アカウント毎の特別なメールボックスへのアクセス

メールフォルダのパス情報
 メールボックスのパス表記
 選択中のメールボックスのフルパスを取得
 フルパス文字列でメールボックスを指定

メールのフォルダ間の移動
 メールの指定①
 メールの指定②
 メールのコピー
 メールの移動

ビューアウィンドウの操作
 メール.appのウィンドウ種別
 ビューアウィンドウ操作
 message viewerのプロパティ項目と内容①
 message viewerのプロパティ項目と内容②

メールのルールを扱う
 受信メールから条件実行するアクション「ルール」
 「ルール」の「AppleScriptを実行」環境
 テンプレートのメール.app用プラグインScript
 ルールにAppleScript側からアクセス
 ルールの「条件」にアクセスするrule condition
 rule conditionとGUI上の内容との対比
 ルールの「操作」の内容にアクセス
 ルール「操作」の詳細にアクセス

■上級

URL Eventの発生/受信
 メール.appが対応しているURLイベント
 mailto: URLイベント(概要)
 mailto: URLイベントを発生してメール作成
 message: ローカルのメールのURLを求めて表示

メールヘッダー情報の取得
 メッセージヘッダーの内容を取得
 メッセージ(メール)のヘッダーを取得
 ヘッダーの構成例
 ヘッダーからフィールド名一覧を取得
 メーラー名(x-mailer)を集計

メールスレッドの可視化
 スレッドの可視化①
 スレッドの可視化②選択中のメール情報
 スレッドの可視化③各メールヘッダ情報
 スレッドの可視化④.dotデータの作成
 スレッドの可視化⑤.dotデータを表示

メーリングリストの振り分け先フォルダを抽出する
 メーリングリストを処理するルールを抽出
 メッセージ移動先がないルールを抽出

メールの再仕分け
 「メールの再仕分け」とは?
 「メールの再仕分け」Script変更履歴
 「メールの再仕分け」Script処理概要
 「メールの再仕分け」Script①
 「メールの再仕分け」Script②
 「メールの再仕分け」Script③
 「メールの再仕分け」Script④
 「メールの再仕分け」Script⑤
 「メールの再仕分け」Script⑥
 「メールの再仕分け」Script⑦
 「メールの再仕分け」Script⑧

スタイル付きテキストのメール作成+データ差し込み
 スタイル付きメールを作成するために
 書式スタイル付きメールを作成
 HTMLからスタイル付きメールを作成
 RTFからスタイル付きメールを作成①
 RTFからスタイル付きメールを作成②

Numbers上のデータをもとにさしこみメール作成
 データ差し込みメール送信【概要】
 データ差し込みメール送信①
 データ差し込みメール送信②
 データ差し込みメール送信③
 データ差し込みメール送信④

高速・大量メール送信
 高速メール配信サービスの利用
 高速メール配信サービス一覧
 SendGridのAPI Key取得までの道①
 SendGridのAPI Key取得までの道②
 SendGridのAPI Key取得までの道②
 SendGridによるメール配信テスト(メール.app)
 SendGridによるメール配信テスト(メール.app)
 メール.appによるメール配信プログラム(SendGrid使用)
 REST APIによるメール高速配信プログラム
 SendGridを用いたメール送信所要時間(500通)
 メール.appで大量送信後のメモリの状態

ランタイム環境の選択
 AppleScriptの実行環境はたくさんある
 実行中に止まる、落ちるという場合には

資料集

メール.appのAppleScript用語辞書解説
 メール.app用語辞書

メール.appのAppleScript用語の変遷
 メール.app用語辞書の変遷

メール.app&AppleScript Q&A
 AppleScriptに関するQ&A❶
 AppleScriptに関するQ&A❷

AppleScript mini Reference
macOS搭載 AppleScript関連ドキュメント
AppleScript関連の情報源
macOSバージョンとAppleScriptの動向
macOSとAppleScriptの要素技術史
各macOSごとのAppleScript解説(2/4)
各macOSごとのAppleScript解説(3/4)
各macOSごとのAppleScript解説(4/4)
macOS内AppleScript補助ツールの歴史
System EventsのAppleScript用語辞書変更点
AppleScript 各ランタイム環境情報
AppleScript 関連ツール
Cocoa Scripting 関連ツール

AppleScript予約語一覧

サードパーティ製FrameworkやAppleScript Librariesを呼ぶ
Script BundleにFramework / AppleScript Librariesを入れる
Shane StanleyのScript Toolの変遷
Shane StanleyのScript Libraries
Piyomaru SoftwareのScript Libraries (1/2)
Piyomaru SoftwareのScript Libraries (2/2)

エラーコード表
AppleScriptのエラーコード
AppleScript Errors
Mac OS Errors
AppleEvent Errors (1/2)
AppleEvent Errors (2/2)
OSA Errors
あとがき

Posted in Books news | Tagged Mail | Leave a comment

Mail.appで未読メール数を取得する

Posted on 5月 14, 2019 by Takaaki Naganoya

Mail.appで未読メールを取得するAppleScriptです。

まず、「未読メール」とは何かという話があります。未読メールとは、「まだ読んでいないメール」のことです。つまり、すべてのメッセージに未読/既読のフラグが用意されています。

極論すれば、すべてのメッセージの未読/既読状態を調べる必要があるわけですが、さすがにそれだと実用性がいまひとつなので、メールフォルダごとに未読メッセージのカウントが求められるようになっています。

一般的に「未読メール」といった場合、サブフォルダに仕分けしたメールの未読件数ではなく、受信メールボックス(INBOX)に入っている未読メールをカウントすることになることでしょう。

ただし、Mail.appには複数のメールアカウントを登録できるようになっているため、受信メールボックスのうちそれぞれのアカウントに該当するものが別々に返ってくることになります。

Apple純正のアプリケーションの多くはAppleScriptのオブジェクト名までローカライズされている(過剰ローカライズ)ことが多いのですが、Mail.appについては受信ボックス(=受信トレイ)は「INBOX」となっており、その他のボックスについても(ゴミ箱とか)ローカライズされていません。

画面上の表記 AppleScript上で指定する場合の名称
受信 INBOX
VIP —-
フラグ付き —-
下書き Drafts
送信済み Sent Messages
迷惑メール Junk
ゴミ箱 Deleted Messages
アーカイブ Archive
AppleScript名:メールアカウント名の一覧を取得
tell application "Mail"
  set nameList to name of every account
end tell
–> {"iCloud", "maro@XXXXXXXX"}

★Click Here to Open This Script 

AppleScript名:各アカウントのINBOXフォルダの未読メールを取得する
tell application "Mail"
  set tmpCount to unread count of mailbox "INBOX" of every account
end tell
–> {0, 0}–メールアカウントの数だけ配列要素が返ってくる

★Click Here to Open This Script 

AppleScript名:すべてのINBOXの未読メール数を合計して返す
set aCount to countAllUnreadMessages()
–> 0

on countAllUnreadMessages()
  tell application "Mail"
    set aCount to count every account
    
    
set totalUnreadCount to 0
    
repeat with i from 1 to aCount
      set tmpCount to unread count of mailbox "INBOX" of account i
      
set totalUnreadCount to totalUnreadCount + tmpCount
    end repeat
  end tell
  
  
return totalUnreadCount
end countAllUnreadMessages

★Click Here to Open This Script 

Posted in list | Tagged 10.12savvy 10.13savvy 10.14savvy Mail | Leave a comment

選択中のメッセージに添付ファイルがあれば赤く塗る

Posted on 3月 26, 2019 by Takaaki Naganoya

Mail.app上で選択中のメッセージ(Mail)に添付ファイルがあれば名称リストで背景色を赤く塗るAppleScriptです。

なんでこんなもんが必要なのか?

macOS 10.9あたりからでしょうか、Mail.appでGmailのアカウントのメールを取得するのに時間がかかったり、障害が発生するようになり、「とてもGmailを使っていられない」と感じました。

その結果、Gmailにこだわる必要もなかったので、Gmailアカウントは使わないようにしていました。macOS+Gmailだとトラブルの予感しかしません。

久しぶりにGmailのアカウントを使う必要があり、仕方なく使っていたのですが………やっぱりトラブルに遭遇。

ファイルが添付されたメールでも、受信メッセージ一覧に添付ファイルの表示が一切出ません(macOS 10.12.6+Mail 10.3)。気づいたときには久しぶりに震えましたが、再発防止のためには何かプログラム的なチェックを行う必要があります。

そこで、冒頭で説明したように「Mail.app上で選択中のメールに添付ファイルが存在しているものは、背景色を赤くする」というAppleScriptを作成した次第です。


▲Mail.appのメッセージ一覧(Classicレイアウト)で、本Scriptを用いて添付ファイルチェックを行なったところ。添付メッセージを検出して濃い赤で塗られているメッセージでも、Mail.appの添付ファイルインジケータに添付ファイルがあるように表示されない。Gmailアカウント以外でこのような症状に遭遇した経験はありません

とりあえず、「選択中のメッセージ」を処理するように書いてテストしましたが、Mail.appのメール受信時に実行するメールアクションで実行することが理想です。

ただ、macOS 10.13上ではMail関連(とくにメールアクション)がまともに動いていないので、「見なかったこと」にして、macOS 10.14上ではまともになっていることを祈るばかりです。そういう、macOS 10.13のような壊れ環境でも実行できるようにこのような(メールアクションではない形式の)Scriptで書いてみたという次第です。

AppleScript名:選択中のメッセージに添付ファイルがあれば赤く塗る.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/03/26
—
–  Copyright © 2019 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

tell application "Mail"
  set aSel to selection
  
if aSel = {} then return
  
  
repeat with i in aSel
    set j to contents of i
    
    
set attList to mail attachment of j
    
    
set attNames to {}
    
repeat with ii in attList
      set jj to contents of ii
      
set aName to name of jj
      
set the end of attNames to aName
    end repeat
    
    
if attList is not equal to {} then
      set aLen to (length of attList)
      
display notification "Attached " & (aLen as string) & retMultiple(aLen) of me & "….." & retStrFromArrayWithDelimiter(attNames, ", ") of me
      
      
set background color of j to red
    end if
    
  end repeat
  
end tell

on retMultiple(aLen)
  if aLen = 0 then
    return " no item"
  else if aLen = 1 then
    return " item"
  else
    return " items"
  end if
end retMultiple

–リストを指定デリミタをはさんでテキスト化
on retStrFromArrayWithDelimiter(aList, aDelim)
  set anArray to current application’s NSArray’s arrayWithArray:aList
  
set aRes to anArray’s componentsJoinedByString:aDelim
  
return aRes as list of string or string
end retStrFromArrayWithDelimiter

★Click Here to Open This Script 

Posted in list | Tagged 10.12savvy Mail NSArray | Leave a comment

Mail.appで選択中のフォルダ以下に存在する全メールの添付ファイルの拡張子のバリエーションを集計

Posted on 11月 25, 2018 by Takaaki Naganoya

Mail.appで選択中のフォルダ(メールボックス)以下に存在する全メールの添付ファイルの拡張子のバリエーションを集計するAppleScriptです。

階層フォルダで管理しているメールボックス(フォルダ)のうち、選択しているメールフォルダ以下のすべてのメッセージに添付されているファイルの拡張子を取得して結果を表示します。

何のために作ったとかいうことはなくて、ただ単に調査のために作ったものです。処理するメールの数にもよりますが、CPU負荷も大きく、時間もそれなりに(数分ぐらい?)かかります。

AppleScript名:Mail.appで選択中のフォルダ以下に存在する全メールの添付ファイルの拡張子のバリエーションを集計
—
–  Created by: Takaaki Naganoya
–  Created on: 2018/11/25
—
–  Copyright © 2018 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

script spd
  property fullSubPath : {}
  
property tmpMesList : {}
  
property outList : {}
end script

property aFullPath : ""
property tmpFullPath : ""
property extList : {}

–変数の初期化
set tmpFullPath to ""
set aFullPath to ""
set extList to {}
set (fullSubPath of spd) to {}
set (tmpMesList of spd) to {}
set (outList of spd) to {}

–選択中のメールボックス(フォルダ)のフルパスを文字列で取得(dir1/dir2/dir3)
set targMBObj to getSelectedOneMailBox() of me
extraxctTextFullPathOfMBObject(targMBObj) of me

copy aFullPath to targMB

if targMB = "" then
  display notification "Mail.app上で選択中のメールボックス(フォルダ)はありません。" –"No Mail.app folder selection" in Japanese
  
return
end if

–指定メールボックス(フォルダ)以下のすべてのメールボックス(フォルダ)を取得する
tell application "Mail"
  tell mailbox targMB
    set aList to name of every mailbox
  end tell
end tell

–指定フォルダ以下のMailboxをサブフォルダまで再帰ですべて取得する
repeat with i in aList
  set j to contents of i
  
set tmpPath to targMB & "/" & j
  
set the end of (fullSubPath of spd) to tmpPath
  
getEverySubMailbox(tmpPath) of me
end repeat

–全サブフォルダからメールを取得し、添付ファイルの確認を行なって、添付ファイルの拡張子を取得して集計
repeat with i in (fullSubPath of spd)
  set tmpBox to contents of i
  
  
tell application "Mail"
    tell mailbox tmpBox
      set mesList to (every message)
    end tell
    
    
–指定フォルダ中のMailでループ
    
repeat with ii in mesList
      set jj to contents of ii
      
      
try
        set attS to mail attachment of jj
      on error
        set attS to {}
      end try
      
      
if attS is not equal to {} then
        
        
–Mailの添付ファイルの拡張子を集計する
        
try
          repeat with iii in attS
            set jjj to contents of iii
            
set aName to name of jjj
            
            
set aExt to getPathExtension(aName) of me
            
            
if (aExt is not in extList) and (aExt is not equal to "") then
              set the end of extList to aExt
            end if
            
          end repeat
        end try
      end if
    end repeat
  end tell
end repeat

choose from list extList with prompt "選択中のメールフォルダ「" & targMB & "」中のメールに添付されているファイルの種別です" with title "添付ファイルの拡張子一覧"

–指定のメールボックス(フォルダ)以下にあるすべてのサブフォルダを(propertyに)追記して返す
on getEverySubMailbox(aPath)
  tell application "Mail"
    tell mailbox aPath
      set aaList to name of every mailbox
      
if aaList is not equal to {} then
        repeat with i in aaList
          set j to contents of i
          
set tmpFullPath to aPath & "/" & j
          
copy tmpFullPath to newPath
          
set the end of (fullSubPath of spd) to newPath
          
getEverySubMailbox(newPath) of me
        end repeat
      end if
    end tell
  end tell
end getEverySubMailbox

–Message Viewerで現在表示中のメールボックスの情報を1つのみ返す
on getSelectedOneMailBox()
  tell application "Mail"
    tell message viewer 1
      set mbList to selected mailboxes
    end tell
  end tell
  
if length of mbList is equal to 0 then
    return ""
  end if
  
  
set aMailBox to contents of (item 1 of mbList)
  
return aMailBox
end getSelectedOneMailBox

–Mail.appのメールボックスオブジェクトを渡すと、テキストのフルパスに変換
on extraxctTextFullPathOfMBObject(aPath)
  tell application "Mail"
    try
      set parentPath to container of aPath
    on error
      return
    end try
    
    
set meName to name of aPath
    
if aFullPath = "" then –1回目のみスラッシュを入れないで処理
      set aFullPath to meName
    else
      –通常処理はこちら
      
set aFullPath to meName & "/" & aFullPath
    end if
    
    
extraxctTextFullPathOfMBObject(parentPath) of me –再帰呼び出し
  end tell
end extraxctTextFullPathOfMBObject

on getPathExtension(aStr as string)
  set pathString to current application’s NSString’s stringWithString:aStr
  
return (pathString’s pathExtension()) as string
end getPathExtension

★Click Here to Open This Script 

Posted in file list recursive call | Tagged 10.11savvy 10.12savvy Mail | Leave a comment

Mail.appで選択中のフォルダ以下に存在する全メールの指定形式の添付ファイルを指定フォルダにコピー v2

Posted on 11月 25, 2018 by Takaaki Naganoya

Mail.appで選択中のフォルダ(メールボックス)以下に存在する全メールに添付されているファイルのうち、指定形式のファイルのみ指定フォルダに保存するAppleScriptです。

・Mail.appで選択中のフォルダを求め、フォルダの(Mail.app上の)フルパス文字列を再帰処理で取得
・書き出し先フォルダを指定(choose folder)
・指定のMail.app上の選択中のフォルダ以下の全メールフォルダ、およびそれらの中に入っているメールを再帰処理で取得
・取得した全メールをループで調査し、添付ファイルが存在するかチェック
・1メールあたりの添付ファイルはリストで返ってくるので、すべて求めてループで処理
・添付ファイルの拡張子を求め、書き出し許可リスト {“txt”, “gv”, “dot”} に入っていれば、指定フォルダ内に保存


▲書き出したファイル

たまーに、添付ファイルがよく出回っているメーリングリスト(QuartzComposer MLとかGraphViz MLとか)で、メール添付されているファイルを一括で取得するために作成しました。

AppleScript名:Mail.appで選択中のフォルダ以下に存在する全メールの指定形式の添付ファイルを指定フォルダにコピー v2
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

script spd
  property fullSubPath : {}
  
property tmpMesList : {}
end script

property aFullPath : ""
property tmpFullPath : ""

set targList to {"txt", "gv", "dot"} –書き出し対象拡張子

–変数の初期化
set tmpFullPath to ""
set aFullPath to ""
set (fullSubPath of spd) to {}
set (tmpMesList of spd) to {}

–選択中のメールボックス(フォルダ)のフルパスを文字列で取得(dir1/dir2/dir3)
set targMBObj to getSelectedOneMailBox() of me
extraxctTextFullPathOfMBObject(targMBObj) of me

copy aFullPath to targMB

if targMB = "" then
  display notification "Mail.app上で選択中のメールボックス(フォルダ)はありません。"
  
return
end if

tell current application
  set targFol to choose folder with prompt "添付ファイルの書き出し先フォルダを指定してください"
end tell

–指定メールボックス(フォルダ)以下のすべてのメールボックス(フォルダ)を取得する
tell application "Mail"
  tell mailbox targMB
    set aList to name of every mailbox
  end tell
end tell

–指定フォルダ以下のMailboxをサブフォルダまで再帰ですべて取得する
repeat with i in aList
  set j to contents of i
  
set tmpPath to targMB & "/" & j
  
set the end of (fullSubPath of spd) to tmpPath
  
getEverySubMailbox(tmpPath) of me
end repeat

–全サブフォルダから指定文字列をSubjectに含むものをすべて取得する
repeat with i in (fullSubPath of spd)
  set tmpBox to contents of i
  
  
tell application "Mail"
    tell mailbox tmpBox
      set mesList to (every message)
    end tell
    
    
–指定フォルダ中のMailでループ
    
repeat with ii in mesList
      set jj to contents of ii
      
set attS to mail attachment of jj
      
      
if attS is not equal to {} then
        
        
–Mailの添付ファイルを順次指定フォルダに保存する
        
repeat with iii in attS
          set jjj to contents of iii
          
set aName to name of jjj
          
          
set aExt to getPathExtension(aName) of me
          
if aExt is in targList then
            set savePath to (targFol as string) & aName
            
            
–指定パスに添付ファイルを保存
            
save jjj in file savePath
          end if
        end repeat
        
      end if
    end repeat
  end tell
  
end repeat

–指定のメールボックス(フォルダ)以下にあるすべてのサブフォルダを(propertyに)追記して返す
on getEverySubMailbox(aPath)
  tell application "Mail"
    tell mailbox aPath
      set aaList to name of every mailbox
      
if aaList is not equal to {} then
        repeat with i in aaList
          set j to contents of i
          
set tmpFullPath to aPath & "/" & j
          
copy tmpFullPath to newPath
          
set the end of (fullSubPath of spd) to newPath
          
getEverySubMailbox(newPath) of me
        end repeat
      end if
    end tell
  end tell
end getEverySubMailbox

–Message Viewerで現在表示中のメールボックスの情報を1つのみ返す
on getSelectedOneMailBox()
  tell application "Mail"
    tell message viewer 1
      set mbList to selected mailboxes
    end tell
  end tell
  
if length of mbList is equal to 0 then
    return ""
  end if
  
  
set aMailBox to contents of (item 1 of mbList)
  
return aMailBox
end getSelectedOneMailBox

–Mail.appのメールボックスオブジェクトを渡すと、テキストのフルパスに変換
on extraxctTextFullPathOfMBObject(aPath)
  tell application "Mail"
    try
      set parentPath to container of aPath
    on error
      return
    end try
    
    
set meName to name of aPath
    
if aFullPath = "" then –1回目のみスラッシュを入れないで処理
      set aFullPath to meName
    else
      –通常処理はこちら
      
set aFullPath to meName & "/" & aFullPath
    end if
    
    
extraxctTextFullPathOfMBObject(parentPath) of me –再帰呼び出し
  end tell
end extraxctTextFullPathOfMBObject

–ファイル名から拡張子を取得する
on getPathExtension(aStr as string)
  set pathString to current application’s NSString’s stringWithString:aStr
  
return (pathString’s pathExtension()) as string
end getPathExtension

★Click Here to Open This Script 

Posted in list | Tagged 10.11savvy 10.12savvy Mail NSString | Leave a comment

Mail.appで選択中のメールボックス(フォルダ)のパスを文字列で返す

Posted on 11月 25, 2018 by Takaaki Naganoya

Mail.app上で選択中のメールボックス(フォルダ)のパスをフルパスの文字列で求めるAppleScriptです。

Mail.app上ではメールボックス(フォルダ)を複数階層作成できます。ファイルシステム上のフォルダではないので、ファイル処理でメールのメールボックス(フォルダ)間の移動を行うことはできませんが、パスを指定してmoveコマンドでメールを移動させられます。

Mail.app上のパスは、

level1/level2

のように記述します。

のように選択している場合には、

"ML/Xojo, REALbasic"

と返ってきます。

tell application "Mail"
  tell mailbox "ML/Xojo, REALbasic"
    set aList to every message
  end tell
end tell

★Click Here to Open This Script 

のように指定すれば、指定フォルダ以下のメール(message)が返ってきます(サブフォルダ内のメールは対象外)。ファイルパスと異なり、空白文字が入ってくることに備えてquoted ofでパスをクォート処理しておく必要はありません。

フルパスを求めるのに、再帰処理を行なっています。

AppleScript名:Mail.appで選択中のメールボックス(フォルダ)のパスを文字列で返す
property aFullPath : ""

set aFullPath to ""

–選択中のメールボックス(フォルダ)を取得
set aMB to getSelectedOneMailBox() of me

–メールボックス(フォルダ)のオブジェクトのMail.app上のパスを取得して文字列化する
set pathStr to extraxctTextFullPathOfMBObject(aMB) of me
return aFullPath
–> "ML/Xojo, REALbasic"

–Message Viewerで現在表示中のメールボックスの情報を1つのみ返す
on getSelectedOneMailBox()
  tell application "Mail"
    tell message viewer 1
      set mbList to selected mailboxes
    end tell
  end tell
  
if length of mbList is equal to 0 then
    return ""
  end if
  
  
set aMailBox to contents of (item 1 of mbList)
  
return aMailBox
end getSelectedOneMailBox

–Mail.appのメールボックスオブジェクトを渡すと、テキストのフルパスに変換
on extraxctTextFullPathOfMBObject(aPath)
  tell application "Mail"
    try
      set parentPath to container of aPath
    on error
      return
    end try
    
    
set meName to name of aPath
    
if aFullPath = "" then –1回目のみスラッシュを入れないで処理
      set aFullPath to meName
    else
      –通常処理はこちら
      
set aFullPath to meName & "/" & aFullPath
    end if
    
    
extraxctTextFullPathOfMBObject(parentPath) of me –再帰呼び出し
  end tell
end extraxctTextFullPathOfMBObject

★Click Here to Open This Script 

Posted in list Text | Tagged 10.11savvy 10.12savvy 10.13savvy 10.14savvy Mail | Leave a comment

NSSharingService経由でメールを新規作成(作成するだけ、送信しない)

Posted on 3月 14, 2018 by Takaaki Naganoya

NSSharingServiceを利用してメールを新規作成するAppleScriptです。

仕様上、新規作成するだけで送信は行いません。普通にMail.appをコントロールすればメールの送信は行えるので、単にNSSharingServiceのテストです。

AppleScript名:NSSharingService経由でメールを新規作成(作成するだけ、送信しない)
— Created 2017-02-23 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"

set shareItems to {"てすとだよおおおん
2行目
3行目"
, "よろしくー1
よろしくー2"
, "Footer?"}
set aService to current application’s NSSharingService’s sharingServiceNamed:(current application’s NSSharingServiceNameComposeEmail)
aService’s setDelegate:me
aService’s setRecipients:{"nobody@piyocast.com"}
aService’s setSubject:"試験送信"
aService’s performWithItems:shareItems

★Click Here to Open This Script 

Posted in 未分類 | Tagged 10.11savvy 10.12savvy 10.13savvy Mail | Leave a comment

Mail.appで選択中のメールからMessage IDを取得する

Posted on 3月 13, 2018 by Takaaki Naganoya

MailCore2.frameworkを利用して、Mail.app上で選択中のメールのヘッダーからMessage IDを取得するAppleScriptです。

Mail.appから取得したヘッダーテキストから、MailCore2.frameworkでヘッダーオブジェクトを生成し、同フレームワークの機能を利用してMessage IDを取得します。1メールあたり0.03秒ぐらいで取得します。

ヘッダーのテキストを行単位でparseしてサーチしても全然いいのですが、メール関連は割と込み入った仕様がてんこ盛りなので、AppleScriptでもMailCore2をよく活用しています。

もはや、MailCore2がないとできない処理が多すぎて、これが使えないとけっこう泣きが入ります。

MailCore.framework(To ~/Library/Frameworks/)

AppleScript名:Mail.appで選択中のメールからMessage IDを取得する.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2018/03/12
—
–  Copyright © 2018 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions
use framework "MailCore" –https://github.com/MailCore/mailcore2

tell application "Mail"
  set a to selection
  
if a = {} then error "No Selection"
  
set aa to first item of a
  
set aSource to source of aa –メールのソースを取得
end tell

set aStr to current application’s NSString’s stringWithString:aSource
set aData to aStr’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)

set aHeader to current application’s MCOMessageHeader’s headerWithData:aData
set aMessageID to (aHeader’s messageID()) as string
–> "0A23983C-81B0-4E33-9C0B-B4A934A0E284@xxxxxx-xxx.xxx.xx"

★Click Here to Open This Script 

Posted in System | Tagged 10.11savvy 10.12savvy 10.13savvy Mail | Leave a comment

POST method REST API__Sendgrid_Send v1

Posted on 2月 26, 2018 by Takaaki Naganoya

メールの高速大量送信サービス「SendGrid」のREST API経由でメールの送信を行うAppleScriptです。

試用にあたっては、SendGridにサインアップして試用アカウントを取得してください。この試用アカウントで実運用を行わないことがアカウト取得の前提条件となっています(かなり念押しされました、、、)。

アクセストークンを取得したら、本リスト内のretAccessTokenハンドラ内にペーストしてください。本リストを掲載状態のままAccessTokenが伏字の状態で実行しても、メール送信は行えません。

気になるメールの転送速度ですが、本AppleScriptではだいたい1通あたり0.1秒程度です。Mail.app経由で一般的なプロバイダのメールサーバーを経由して送るよりは10倍程度高速ですが、APIの呼び方をチューニングすることで、さらにこの10倍ぐらいの高速送信は行えるようになります。

AppleScript名:POST method REST API__Sendgrid_Send v1
— Created 2017-05-23 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set a1Dat to current application’s NSDate’s timeIntervalSinceReferenceDate()
repeat with i from 1 to 10
  set aSubject to "ぴよまるさんからの新しいおしらせ" & i as string
  
set aBody to "ぴよまるさんこんばんわ" & i as string
  
set toAddress to "maro@piyocast.com"
  
set fromAddress to "piyomarusoft@mac.com"
  
set aRes to sendMailViaSendGrid(aSubject, aBody, toAddress, fromAddress) of me
end repeat
set b1Dat to current application’s NSDate’s timeIntervalSinceReferenceDate()
set c1Dat to (b1Dat – a1Dat) as real
return c1Dat

on sendMailViaSendGrid(aSubject, aBody, toAddress, fromAddress)
  set accessToken to "Bearer " & retAccessToken() —Access Token
  
set reqURLStr to "https://api.sendgrid.com/v3/mail/send"
  
set aRec to {personalizations:{{|to|:{{email:toAddress}}, subject:aSubject}}, |from|:{email:fromAddress, |name|:"ぴよ まるお"}, content:{{type:"text/plain", value:aBody}}}
  
set aRes to callRestPOSTAPIAndParseResults(reqURLStr, accessToken, aRec) of me
  
set aRESTres to json of aRes
  
set aRESCode to (responseCode of aRes) as integer
  
return (aRESCode = 202) –リクエスト成立ならtrueが返る( )
end sendMailViaSendGrid

–POST methodのREST APIを呼ぶ
on callRestPOSTAPIAndParseResults(aURL, anAPIkey, aRec)
  set aRequest to current application’s NSMutableURLRequest’s requestWithURL:(current application’s |NSURL|’s URLWithString:aURL)
  
aRequest’s setHTTPMethod:"POST"
  
aRequest’s setCachePolicy:(current application’s NSURLRequestReloadIgnoringLocalCacheData)
  
aRequest’s setHTTPShouldHandleCookies:false
  
aRequest’s setTimeoutInterval:60
  
aRequest’s setValue:anAPIkey forHTTPHeaderField:"Authorization"
  
aRequest’s setValue:"application/json" forHTTPHeaderField:"Content-Type"
  
aRequest’s setValue:"gzip" forHTTPHeaderField:"Content-Encoding"
  
set dataJson to current application’s NSJSONSerialization’s dataWithJSONObject:aRec options:0 |error|:(missing value)
  
aRequest’s setHTTPBody:dataJson
  
  
–CALL REST API
  
set aRes to current application’s NSURLConnection’s sendSynchronousRequest:aRequest returningResponse:(reference) |error|:(missing value)
  
  
–Parse Results
  
set resList to aRes as list
  
set bRes to contents of (first item of resList)
  
set resStr to current application’s NSString’s alloc()’s initWithData:bRes encoding:(current application’s NSUTF8StringEncoding)
  
set jsonString to current application’s NSString’s stringWithString:resStr
  
set jsonData to jsonString’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)
  
set aJsonDict to current application’s NSJSONSerialization’s JSONObjectWithData:jsonData options:0 |error|:(missing value)
  
  
–Get Response Code
  
set dRes to contents of second item of resList
  
set resCode to (dRes’s statusCode()) as integer
  
  
–Get Response Header
  
set resHeaders to (dRes’s allHeaderFields()) as record
  
  
return {json:aJsonDict, responseCode:resCode, responseHeader:resHeaders}
end callRestPOSTAPIAndParseResults

on retAccessToken()
  return "XX.XxX_XXxxXXxxxxxxXxXXXx.xXXXxXXXxXXXxXXxXxxxXXXxXXxxxXXXXxxxXxXxXXx"
end retAccessToken

★Click Here to Open This Script 

Posted in JSON Network REST API | Tagged 10.11savvy 10.12savvy 10.13savvy Mail | Leave a comment

Mail.appで送信元を明示的に指定しつつメール送信

Posted on 2月 26, 2018 by Takaaki Naganoya

Mail.appで送信元の氏名および送信先の氏名を明示的に指定しつつメール送信を行うAppleScriptです。

Mail.appの操作Scriptはやればやるだけ課題が見えてくるので、ほどほどのところで止めています。メールアカウントについて、1つしかアカウントを登録していなければデフォルトのメールアカウントでを前提にメール送信すればいいはずですが、複数のアカウントを登録しているケースが多いので、アカウントを指定する処理を書いてみました。

メールの大量連続送信については、1990年代からずっとAppleScriptで行なっていますが、途中で知り合いが盛大にやらかした(短時間で大量のメール送信を行なってさまざまなプロバイダのメールサーバーをコケさせかけた)影響もあって、日本国内のネットワークでは単位時間内に所定の本数を超えるメール送信を行うと、プロバイダからすぐにメール送信のリレーを止められ、その後しばらくメール送信を行えなくなるのが「お約束」となっています。

# だいたい、1秒に1通以上(1分に60通以上)送信すると疑われます。

かくして、メールの大量一括送信をScriptで行う場合には、ある程度「待ち時間」を入れつつ送信するか、REST API経由でSendGridのサービスを呼び出してメーラー以外でメール送信を行うあたりが落とし所になっています。

AppleScript名:Mail.appで送信元を明示的に指定しつつメール送信

–本来、メールアカウントのnameがわかっていれば、わざわざリストから選択する必要はない
tell application "Mail"
  set aList to name of every account
  
set aaSel to choose from list aList
  
if aaSel = {} or aaSel = false then return
  
set aSel to first item of aaSel
end tell

log aSel

set mRes to makeAMailWithSpecifiedAccount("メールのタイトルだよ100", "テストメールの本文だよ100", "送信者の名前だよ", "送付先氏名", "nobody@piyocast.com", aSel) of me

on makeAMailWithSpecifiedAccount(theSubject, theBody, myName, yourName, yourAddress, myAccountName)
  tell application "Mail"
    –Account check
    
set anAccount to account myAccountName
    
set aProp to enabled of anAccount
    
if aProp is not equal to true then return false –アカウントが有効でなかった場合はエラーに
    
    
set eList to (email addresses of anAccount)
    
if eList = {} then return false –アカウントにメールアドレスの登録がなかった場合はエラーに(ねんのため)
    
set myEmail to first item of eList
    
    
–Make Sender
    
set theSender to myName & "<" & myEmail & ">"
    
    
–Make Message & Send
    
set newMessage to make new outgoing message with properties {sender:theSender, subject:theSubject, content:theBody & return & return, visible:false}
    
tell newMessage
      set visible to false
      
make new to recipient at end of to recipients with properties {name:yourName, address:yourAddress} –受取人の指定
      
send –メール送信
    end tell
  end tell
  
  
return true
end makeAMailWithSpecifiedAccount

★Click Here to Open This Script 

Posted in 未分類 | Tagged 10.11savvy 10.12savvy 10.13savvy Mail | 1 Comment

選択中のメール本文のSHA3チェックサムを計算

Posted on 2月 26, 2018 by Takaaki Naganoya

Mail.appで選択中のメール本文のSHA3チェックサムを計算するAppleScriptです。

macOS VistaことmacOS 10.13。もう、10.13.xのバージョン中に状況が好転するような気配がまったくしないこのOS。2018年6月のWWDCで次の10.14を発表して「アップデート間隔を伸ばす」と言ったところで、同じCEO、同じスタッフ、同じ開発期間でまた2018年10月にリリースするとかいったら「同じことの繰り返し」になるのではないかと戦々恐々としています。

macOS 10.13のMail.appでメールの文字化けなどが報告されているため、実際に同じ文面のメールのチェックサムを10.12と10.13で比較するためにこのAppleScriptを書いてみました。

結果は、とくに文字化けもなく同じチェックサム値が得られたものの、OSごと勝手にクラッシュしてシャットダウンするとか、Mail.appのルールが着信したてのメールに効かない時があるとか、Finderが不安定だとか、日本語入力時に辞書の用例が表示されると選択した候補で変換候補を確定できないとか、日本語入力時に確定後も変換ウィンドウが消えないとか、いまだにけっこうムチャクチャなOSです。

–> SHA3Kit.framework

AppleScript名:選択中のメール本文のSHA3チェックサムを計算
— Created 2017-02-25 by Takaaki Naganoya
— 2018 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "SHA3Kit" –https://github.com/jaeggerr/NSString-SHA3

set aMailBody to getSelectedMailBody() of me
if aMailBody = false then error "No Selection"

set origData to (current application’s NSString’s stringWithString:aMailBody)
set aHash1 to (origData’s sha3:256) as string
–> "C69C8E08D1E6A8DA53C4E00D02D5DB5C2937722730CF63C1EC44E59B57A3B03F"

on getSelectedMailBody()
  tell application "Mail"
    set aaSel to selection
    
if aaSel = {} or aaSel = "" then return false
    
    
set aSel to first item of aaSel
    
    
set aCon to content of aSel
    
return aCon
  end tell
end getSelectedMailBody

★Click Here to Open This Script 

Posted in Text | Tagged 10.11savvy 10.12savvy 10.13savvy Mail | Leave a comment

選択中のメール本文のHexダンプを取得

Posted on 2月 26, 2018 by Takaaki Naganoya
AppleScript名:選択中のメール本文のHexダンプを取得
— Created 2017-02-25 by Takaaki Naganoya
— 2018 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set aMailBody to getSelectedMailBody() of me
if aMailBody = false then error "No Selection"

set theNSString to current application’s NSString’s stringWithString:aMailBody
set aList to hexDumpString(theNSString) of me
return aList

on getSelectedMailBody()
  tell application "Mail"
    set aaSel to selection
    
if aaSel = {} or aaSel = "" then return false
    
    
set aSel to first item of aaSel
    
    
set aCon to content of aSel
    
return aCon
  end tell
end getSelectedMailBody

on hexDumpString(theNSString)
  set theNSData to theNSString’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)
  
set theString to (theNSData’s |description|()’s uppercaseString())
  
  
–Remove "<" ">" characters in head and tail
  
set tLength to (theString’s |length|()) – 2
  
set aRange to current application’s NSMakeRange(1, tLength)
  
set theString2 to theString’s substringWithRange:aRange
  
  
–Replace Space Characters
  
set aString to current application’s NSString’s stringWithString:theString2
  
set bString to aString’s stringByReplacingOccurrencesOfString:" " withString:""
  
  
set aResList to splitString(bString, 2)
  
–> {​​​​​"E3", ​​​​​"81", ​​​​​"82", ​​​​​"E3", ​​​​​"81", ​​​​​"84", ​​​​​"E3", ​​​​​"81", ​​​​​"86", ​​​​​"E3", ​​​​​"81", ​​​​​"88", ​​​​​"E3", ​​​​​"81", ​​​​​"8A"​​​}
  
  
return aResList
end hexDumpString

–Split NSString in specified aNum characters
on splitString(aText, aNum)
  set aStr to current application’s NSString’s stringWithString:aText
  
if aStr’s |length|() ≤ aNum then return aText
  
  
set anArray to current application’s NSMutableArray’s new()
  
set mStr to current application’s NSMutableString’s stringWithString:aStr
  
  
set aRange to current application’s NSMakeRange(0, aNum)
  
  
repeat while (mStr’s |length|()) > 0
    if (mStr’s |length|()) < aNum then
      anArray’s addObject:(current application’s NSString’s stringWithString:mStr)
      
mStr’s deleteCharactersInRange:(current application’s NSMakeRange(0, mStr’s |length|()))
    else
      anArray’s addObject:(mStr’s substringWithRange:aRange)
      
mStr’s deleteCharactersInRange:aRange
    end if
  end repeat
  
  
return (current application’s NSArray’s arrayWithArray:anArray) as list
end splitString

★Click Here to Open This Script 

Posted in Text | Tagged 10.11savvy 10.12savvy 10.13savvy Mail | Leave a comment

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • Xcode 14.2でAppleScript App Templateを復活させる
  • macOS 13 TTS Voice環境に変更
  • UI Browserがgithub上でソース公開され、オープンソースに
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 従来と異なるmacOS 13の性格?
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
  • macOS 13でNSNotFoundバグふたたび
  • macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (185) 13.0savvy (55) CotEditor (60) Finder (47) iTunes (19) Keynote (98) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (56) Pages (37) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC