Safariで開いているURLとタイトルをAppleScriptで取得し、Scrapboxのデイリーページに追加する
https://gyazo.com/71a1fbf73be2cb71575a86355ede93e7
2018-12-03
ブログタイトルなどにシングルクォーテーションがあった場合のエスケープ処理を追加
code:AppleScript
-- Safariで開いているURLとタイトルをAppleScriptで取得し、
-- Scrapboxのデイリーページに追加する
-- Safariのスクリプトフォルダに入れておくと便利です
set myDate to getCurrentDate()
set myPageName to myDate & " WebClips"
set {myURL, myTitle} to getActiveTab()
set myRow to " " & "& myTitle & " " & myURL & ""
addScrapBox(myPageName, myRow)
-- Safari の最前面タブのURLとタイトルを返す
on getActiveTab()
tell application "Safari"
tell current tab of window 1
{URL, name}
end tell
end tell
end getActiveTab
-- Scrapboxに書き込む(Safariを使用)
on addScrapBox(pageName, myStr)
set myProject to "mikolog" -- << CHANGE YOUR PROJECT NAME
set myURL to baseURL & myProject & "/" & urlEncode(escapeSingleQuotes(pageName)) & "?body=" & urlEncode(escapeSingleQuotes(myStr))
--tell application "Safari"
tell application "Safari"
activate
tell window 1
open location myURL
end tell
end tell
--myURL
end addScrapBox
-- Qiita@ynomura AppleScript でURLエンコード・デコード
on urlEncode(inData) -- URLエンコード(%エンコード)
-- 文字コードを utf8 としてエンコードしたい場合は、「as «class utf8»」で変換したものを渡すこと。
set scpt to "php -r 'echo rawurlencode(" & quote & inData & quote & ");'"
return (do shell script scpt) as string
end urlEncode
-- 日付を取得する
on getCurrentDate()
set myCommand to "date '+%Y-%m-%d'"
do shell script myCommand
end getCurrentDate
-- シングルクォーテーションをエスケープする(コマンドライン用)
on escapeSingleQuotes(myStr)
set myChar to "'"
set bs to ASCII character 128
set myStr to replace(myStr, myChar, myChar & bs & myChar & myChar)
end escapeSingleQuotes
on replace(myStr, sFrom, sTo)
set myStr to join(split(myStr, sFrom), sTo)
return myStr
end replace
on split(myStr, mySep)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to mySep
set myList to every text item of myStr
set AppleScript's text item delimiters to oldDelim
return myList
end split
on join(myList, mySep)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to mySep
set myStr to myList as string
set AppleScript's text item delimiters to oldDelim
return myStr
end join