クリップボードの中身で保存可能なものをファイルに保存する
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 |
008 | use AppleScript version "2.8" |
009 | use framework "Foundation" |
010 | use framework "AppKit" |
011 | use framework "UniformTypeIdentifiers" |
012 | use scripting additions |
013 | |
014 | property refMe : a reference to current application |
015 | |
016 | ################################ |
017 | ##### パス関連 |
018 | ################################ |
019 | ###フォルダ名用に時間を取得する |
020 | set strDateno to doGetDateNo("yyyyMMdd-hhmmss") as text |
021 | ###保存先 |
022 | set appFileManager to refMe's NSFileManager's defaultManager() |
023 | set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDownloadsDirectory) inDomains:(refMe's NSUserDomainMask)) |
024 | set ocidDownloadsDirPathURL to ocidURLsArray's firstObject() |
025 | set strSubDirName to ("Pasteboard/" & strDateno) as text |
026 | set ocidSaveParentsDirPathURL to ocidDownloadsDirPathURL's URLByAppendingPathComponent:(strSubDirName) isDirectory:(true) |
027 | #フォルダ生成 |
028 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0 |
029 | ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions) |
030 | set listDone to appFileManager's createDirectoryAtURL:(ocidSaveParentsDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference) |
031 | if (item 1 of listDone) is true then |
032 | log "正常処理" |
033 | else 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 |
038 | end if |
039 | |
040 | ################################ |
041 | ######ペーストボードを取得 |
042 | ################################ |
043 | set ocidPasteboard to refMe's NSPasteboard's generalPasteboard() |
044 | #タイプを取得 |
045 | set ocidPastBoardTypeArray to ocidPasteboard's types() |
046 | #全タイプ処理する |
047 | repeat 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 |
092 | end repeat |
093 | |
094 | ################################ |
095 | ##### 保存先を開く |
096 | ################################ |
097 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
098 | set boolDone to appSharedWorkspace's openURL:(ocidSaveParentsDirPathURL) |
099 | |
100 | |
101 | ################################ |
102 | ##### ファイル名用の時間 |
103 | ################################ |
104 | to 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 |
114 | end doGetDateNo |
AppleScriptで生成しました |
| 固定リンク
「NSPasteboard」カテゴリの記事
- クリップボード内のテキストに改行を<br />に変更して戻す 修正(2024.11.15)
- ペーストボードの内容の種類の確認(2024.10.06)
- [NSPasteboard]ペーストボードからテキストの取り出し(修正)(2024.07.02)
- 画像データをクリップボードにPDF形式で入れる(2024.06.28)
- クリップボードの中身で保存可能なものをファイルに保存する(2024.06.23)