« PDFに権限パスワードを設定する(エラー制御を少し修正) | トップページ | Finderに内包されているアプリケーションを開く »

クリップボードの中身で保存可能なものをファイルに保存する


AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# クリップボードの中身で保存可能なものを
005# ダウンロードフォルダに保存します
006# com.cocolog-nifty.quicktimer.icefloe
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use framework "AppKit"
011use framework "UniformTypeIdentifiers"
012use scripting additions
013
014property refMe : a reference to current application
015
016################################
017##### パス関連
018################################
019###フォルダ名用に時間を取得する
020set strDateno to doGetDateNo("yyyyMMdd-hhmmss") as text
021###保存先
022set appFileManager to refMe's NSFileManager's defaultManager()
023set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDownloadsDirectory) inDomains:(refMe's NSUserDomainMask))
024set ocidDownloadsDirPathURL to ocidURLsArray's firstObject()
025set strSubDirName to ("Pasteboard/" & strDateno) as text
026set ocidSaveParentsDirPathURL to ocidDownloadsDirPathURL's URLByAppendingPathComponent:(strSubDirName) isDirectory:(true)
027#フォルダ生成
028set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
029ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
030set listDone to appFileManager's createDirectoryAtURL:(ocidSaveParentsDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
031if (item 1 of listDone) is true then
032  log "正常処理"
033else if (item 2 of listDone) ≠ (missing value) then
034  set strErrorNO to (item 2 of listDone)'s code() as text
035  set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
036  refMe's NSLog("■:" & strErrorNO & strErrorMes)
037  return "エラーしました" & strErrorNO & strErrorMes
038end if
039
040################################
041######ペーストボードを取得
042################################
043set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()
044#タイプを取得
045set ocidPastBoardTypeArray to ocidPasteboard's types()
046#全タイプ処理する
047repeat with itemPastType in ocidPastBoardTypeArray
048  #【1】全タイプ処理 拡張子を決めておく
049  if (itemPastType as text) is "public.utf8-plain-text" then
050    set strExtension to ("utf8.txt") as text
051  else if (itemPastType as text) is "public.utf16-external-plain-text" then
052    set strExtension to ("utf16.txt") as text
053  else
054    #UTTypeを取得
055    set ocidUTType to (refMe's UTType's typeWithIdentifier:(itemPastType))
056    #取得できない
057    if ocidUTType = (missing value) then
058      set strExtension to (missing value)
059    else if ocidUTType ≠ (missing value) then
060      set ocidExtension to (ocidUTType's preferredFilenameExtension())
061      if ocidExtension = (missing value) then
062        set strExtension to (missing value)
063      else
064        set strExtension to (ocidExtension) as text
065      end if
066    end if
067  end if
068  #【2】データを取得
069  if strExtension = (missing value) then
070    #拡張子がわからなかったモノは処理しない
071  else
072    log strExtension
073    #データ取り出し
074    set ocidPastBoardData to (ocidPasteboard's dataForType:(itemPastType))
075    #保存先パス
076    #ファイル名はUTI
077    set ocidBaseFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(itemPastType) isDirectory:(false))
078    #拡張子つけて
079    set ocidSaveFilePathURL to (ocidBaseFilePathURL's URLByAppendingPathExtension:(strExtension))
080    #保存
081    set ocidOption to (refMe's NSDataWritingAtomic)
082    set listDone to (ocidPastBoardData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error| :(reference))
083    if (item 1 of listDone) is true then
084      log "正常処理"
085    else if (item 2 of listDone) ≠ (missing value) then
086      set strErrorNO to (item 2 of listDone)'s code() as text
087      set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
088      refMe's NSLog("■:" & strErrorNO & strErrorMes)
089      return "エラーしました" & strErrorNO & strErrorMes
090    end if
091  end if
092end repeat
093
094################################
095##### 保存先を開く
096################################
097set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
098set boolDone to appSharedWorkspace's openURL:(ocidSaveParentsDirPathURL)
099
100
101################################
102##### ファイル名用の時間
103################################
104to doGetDateNo(strDateFormat)
105  ####日付情報の取得
106  set ocidDate to current application's NSDate's |date|()
107  ###日付のフォーマットを定義
108  set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
109  ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
110  ocidNSDateFormatter's setDateFormat:strDateFormat
111  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
112  set strDateAndTime to ocidDateAndTime as text
113  return strDateAndTime
114end doGetDateNo
AppleScriptで生成しました

|

« PDFに権限パスワードを設定する(エラー制御を少し修正) | トップページ | Finderに内包されているアプリケーションを開く »

NSPasteboard」カテゴリの記事