« ウニ | トップページ | Visual Studio Code用コピーした内容をHTMLに(途中) »

クリップボードの内容でHTMLを作成する

【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()

##########################################
###起動時に削除するフォルダ
##########################################
set ocidDirPathURL to appFileManager's temporaryDirectory()
set ocidCleanupAtStartupURL to ocidDirPathURL's URLByAppendingPathComponent:"Cleanup At Startup" isDirectory:true
####アクセス権777で作成
set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:511 forKey:(refMe's NSFilePosixPermissions)
appFileManager's createDirectoryAtURL:ocidCleanupAtStartupURL withIntermediateDirectories:true attributes:ocidAttrDict |error|:(reference)
####UNIXパスとエイリアス
set strCleanupAtStartupPath to ocidCleanupAtStartupURL's |path|() as text
set aliasCleanupAtStartup to ocidCleanupAtStartupURL as alias

##########################################
###ファイル名とパス
##########################################
###中間ファイルの名前は全部日付
set strTime to doGetDateNo("yyyyMMddhhmmss") as text
####ファイル名
set strHtmlFileName to ("" & strTime & ".html") as text
set strTextFileName to ("" & strTime & ".txt") as text
###HTMLへのURL
set ocidFilePathURL to ocidCleanupAtStartupURL's URLByAppendingPathComponent:(strHtmlFileName) isDirectory:false
set ocidTextFilePathURL to ocidCleanupAtStartupURL's URLByAppendingPathComponent:(strTextFileName) isDirectory:false

##########################################
###ペーストボード
##########################################
####ペーストボード宣言
set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()
####中に格納されているデータタイプを取得
set ocidPastBoardTypeArray to ocidPasteboard's types
log ocidPastBoardTypeArray as list

######必要に応じて受け取る(テキスト系のみ)
if (ocidPastBoardTypeArray's containsObject:"public.html") is true then
  ###ペーストボードの内容をタイプ指定でstringForTypeとして受け取る
  set ocidPublicHTML to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeHTML)
  ###ファイルに書き込む
  ocidPublicHTML's writeToURL:(ocidFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
  
else if (ocidPastBoardTypeArray's containsObject:"public.rtf") is true then
  ###ペーストボードの内容をタイプ指定で受け取るdataForTypeで受け取る
  set ocidPublicRTF to ocidPasteboard's dataForType:(refMe's NSPasteboardTypeRTF)
  ###NSAttributedStringに変換して
  set ocidAttributedString to refMe's NSAttributedString's alloc()'s initWithRTF:(ocidPublicRTF) documentAttributes:(missing value)
  ###文字数を数えてレンジを生成
  set numStringLenge to ocidAttributedString's |length|() as integer
  set ocidRange to refMe's NSMakeRange(0, numStringLenge)
  ####オプション指定
  set ocidAttributedDict to refMe's NSDictionary's dictionaryWithObject:(refMe's NSHTMLTextDocumentType) forKey:(refMe's NSDocumentTypeDocumentAttribute)
  ##オプション指定でHTMLデータに変換
  set listAttributedString to ocidAttributedString's dataFromRange:(ocidRange) documentAttributes:(ocidAttributedDict) |error|:(reference)
  set ocidHTMLDATA to item 1 of listAttributedString
  ###HTMLデータをHTMLテキストに戻して
  set ocidPublicHTML to refMe's NSString's alloc()'s initWithData:(ocidHTMLDATA) encoding:(refMe's NSUTF8StringEncoding)
  ###ファイルに書き込む
  ocidPublicHTML's writeToURL:(ocidFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
  
else if (ocidPastBoardTypeArray's containsObject:"public.utf8-plain-text") is true then
  ###ペーストボードの内容をタイプ指定で受け取るstringForTypeで受け取る
  set ocidPublicText to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeString)
  ###NSAttributedStringに変換して
  set ocidAttributedString to refMe's NSAttributedString's alloc()'s initWithString:(ocidPublicText)
  ###文字数を数えてレンジを生成
  set numStringLenge to ocidAttributedString's |length|() as integer
  set ocidRange to refMe's NSMakeRange(0, numStringLenge)
  ####オプション指定
  set ocidAttributedDict to refMe's NSDictionary's dictionaryWithObject:(refMe's NSHTMLTextDocumentType) forKey:(refMe's NSDocumentTypeDocumentAttribute)
  ##オプション指定でHTMLデータに変換
  set listAttributedString to ocidAttributedString's dataFromRange:(ocidRange) documentAttributes:(ocidAttributedDict) |error|:(reference)
  set ocidHTMLDATA to item 1 of listAttributedString
  ###HTMLデータをHTMLテキストに戻して
  set ocidPublicHTML to refMe's NSString's alloc()'s initWithData:(ocidHTMLDATA) encoding:(refMe's NSUTF8StringEncoding)
  ###ファイルに書き込む
  ocidPublicHTML's writeToURL:(ocidFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
else
  return "HTMLに変換出来ません"
end if


###HTML表示で開く
tell application "TextEdit"
  open (ocidFilePathURL as alias)
end tell

###拡張子をtxtにしたソース閲覧用のファイルを作る
appFileManager's copyItemAtURL:(ocidFilePathURL) toURL:(ocidTextFilePathURL) |error|:(reference)
###ソーステキストで開く
tell application "TextEdit"
  open (ocidTextFilePathURL as alias)
end tell



##########################################
###日付時間番号
##########################################
to doGetDateNo(strDateFormat)
  ####日付情報の取得
  set ocidDate to refMe's NSDate's |date|()
  ###日付のフォーマットを定義
  set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init()
  ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"en_US")
  ocidNSDateFormatter's setDateFormat:(strDateFormat)
  ###日付情報にフォーマットを適応
  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate)
  ###テキストに確定させて
  set strDateAndTime to ocidDateAndTime as text
  ###戻す
  return strDateAndTime
end doGetDateNo




|

« ウニ | トップページ | Visual Studio Code用コピーした内容をHTMLに(途中) »

AppleScript NSPasteboard」カテゴリの記事

AppleScript HTML」カテゴリの記事