「Bluetoothデバイスの電池残量をチェックする」がうまく動かなかったのでちょっと書き換えたら動いた

<追記 2018/8/26>
🔋マークを絵文字で書くと、ページが真っ白になってしまうという罠に
今日気付いたので修正すると同時に、
スクリプトも動かないケースがあったため、修正しました。
</追記>

<追記 2018/10/9>
Magic Trackpad と Magic Keyboardを2に買い換えたら、
"Product"にデバイス名が表示されるようになった。
つまり、
古い電池式の Magic Trackpad と Magic Keyboard は下のscriptを、
新しい充電式の Magic Trackpad と Magic Keyboard は
veadarさんのscriptを使えばいい

ということだと思われる。
</追記>

veadarさんのBluetoothデバイスの電池残量をチェックする | Macの手書き説明書を読んで、
興味を持ったのでダウンロードしてみたのだが、なぜかエラーが出て動かない。

どうやら、私の環境では"Product"でデバイス名が取得できないようだった。

  "Product" =

空っぽ。なんでだろう?

コマンドを打って調べてみたところ、
"IOClass"という項目にそれらしいものが見つかった。

  "IOClass" = "AppleBluetoothHIDKeyboard"

そこでAppleScriptを書き換えたら、動くようになった。

20180822bluetooth-check1.png

やった!

ということで、scriptを置いておく。
スクリプトの下のボタンを押すと、
スクリプトエディターが開くはずなので、
適当に保存して動かせばいい、はず。

-- http://ascii.jp/elem/000/000/592/592958/
-- https://gist.github.com/miyagawa/ed22215692e1937ab4bc


property shellText : "ioreg -r -d 1 -k BatteryPercent | egrep '(\"BatteryPercent\"|\"IOClass\") '"
property soundName : "Pop"


set shellResult to do shell script shellText


set batteryInfoList to extractText(shellResult)


set theText to ""


repeat with i from 1 to number of items in batteryInfoList
set this_item to item i of batteryInfoList
set theText to theText & item 1 of this_item & " : " & item 2 of this_item & "%🔋" & return
end repeat


notification(theText)
on notification(theText)
try
display notification theText sound name soundName with title "remaining battery level"
on error
display alert theText
end try
end notification


on extractText(shellResult)
set tempList to every paragraph of shellResult
set productNameList to {}
set batteryPercentList to {}



repeat with i from 1 to number of items in tempList
set this_item to item i of tempList
if 2nd item of makeList(this_item, "\"") = "IOClass" then
set productName to item 4 of makeList(this_item, "\"")
set end of productNameList to productName
-- display dialog productName
else if 2nd item of makeList(this_item, "\"") = "BatteryPercent" then
set batteryPercent to last item of makeList(this_item, "\" = ")
set end of batteryPercentList to batteryPercent as number
else -- 奇数処理:バッテリー残量
end if
end repeat
set resultList to {}
repeat with i from 1 to number of items in productNameList
set this_item to item i of productNameList
set that_item to item i of batteryPercentList
-- insert actions here
set end of resultList to {this_item, that_item}
end repeat


return resultList
end extractText


on makeList(theText, theDelimiter) --テキストを指定語句で区切り配列に格納する
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to theDelimiter
set theList to every text item of theText
set AppleScript's text item delimiters to tmp
return theList
end makeList

皆さんの拍手が私のモチベーションです。
励ましのコメントも送れるよ!→

ガッツゴリラ

この最も大事な位置にガッツポーズをするゴリラが表示されていることに何の意味があるのだろうか?答え:何もありません。こんなところまでお読みいただきありがとうございました。

Macオンラインウエア情報検索

Loading
Macオンラインウエア情報検索についてはこちらを参照ください。 →「Macオンラインウエア情報検索」をアップデートしました2012

このブログ記事について

このページは、2018年8月22日 16:44に書かれたブログ記事です。

ひとつ前のブログ記事は「web拍手にお答え 2017年9月〜2018年5月」です。

次のブログ記事は「君の名は「たゆう」」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

アーカイブ