Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

テキストベースの棒グラフ取得

Posted on 9月 27 by Takaaki Naganoya

テキストで作成した棒グラフの生成AppleScriptです。

比較的どうでもいいデータの傾向を知りたい場合に棒グラフ表示させて全体の傾向を把握することが、よくあります。そんなときに、文字だけで作成した棒グラフを生成します。何回か書いたことがあるような気もするのですが、簡単なものを作っておきます。

本Scriptで生成するグラフのタイプは2種類。


▲モノクロ表示用の、同じ文字を重ねて棒グラフを表示するタイプ


▲カラー(色分け)表示用の、絵文字を用いて色分けして棒グラフを表示するタイプ

項目名の最大文字数を求めて、他の項目で文字数が足りない箇所には不足分のスペースを足して、グラフの位置揃えを行なっていますが、このあたりタブで処理するべきなのか。

実際には、Pages書類上で選択しておいたオブジェクトから画像(image)のみピックアップして、それらの幅を集計してグラフ表示するような用途に使っています。

AppleScript名:テキストベースの棒グラフ取得.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2025/09/27
—
–  Copyright © 2025 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions
use radioLib : script "displayTextView"

set bList to {12, 21, 15, 26}
set labelList to {"Aaaa", "Bbb", "Cc", "D"}

set aStr to retCharBarChart(labelList, bList, "|") of me
set aStr to "Name" & tab & tab & "Data" & tab & tab & "Number" & return & return & aStr
display text view aStr main message "Bar chart Sample 1" sub message "Sub Message" with properties {font name:"Courier", size:32, width:800, height:300, color:{0, 255, 128}}
(*
"Name    Data    Number

Aaaa    |||||||||||| 12
Bbb     ||||||||||||||||||||| 21
Cc     ||||||||||||||| 15
D     |||||||||||||||||||||||||| 26
"
*)

set bStr to retCharBarChart(labelList, bList, false) of me
(*
"Aaaa    
🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 12
Bbb     
🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦🟦 21
Cc     
🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 15
D     
🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 26
"
*)

set bStr to "Name" & tab & tab & "Data" & tab & tab & "Number" & return & return & bStr
display text view bStr main message "Bar chart Sample 2" sub message "Sub Message" with properties {font name:"Courier", size:16, width:800, height:150, color:{0, 255, 128}}

–文字ベースで棒グラフを作成するための文字グラフルーチン
on retCharBarChart(labelList, bList, charFlag)
  –ラベル文字の長さをそろえる(文字種類については不問、単に文字数をそろえるだけ)
  
set tMax to maximumItemLengthFromList(labelList) of me
  
  
set resText to ""
  
–set aChar to "■"
  
set aCharList to {"🟥", "🟦", "🟨", "🟩", "🟧", "🟪", "🟫", "⬛️", "❤️", "💙", "💛", "💚", "🧡", "💜", "🤎", "🩶", "🖤", "🔴", "🔵", "🟡", "🟢", "🟠", "🟣", "🟤", "⚫️"}
  
set aCharLLen to length of aCharList
  
  
set iCounter to 1
  
set aCharPointer to 1
  
  
if charFlag = false then
    –ローテーション方式の色文字グラフ
    
repeat with i in bList
      set j to contents of i
      
set aLabel to (contents of item iCounter of labelList) as string
      
set aLabel to paddingSpacesAfter(aLabel, tMax, " ") of me
      
      
set tmpChar to contents of item aCharPointer of aCharList
      
set resText to (resText & aLabel & tab & tab & makeCharRep(j, tmpChar) of me & " " & j as string) & return
      
      
set iCounter to iCounter + 1
      
set aCharPointer to aCharPointer + 1
      
if aCharPointer > aCharLLen then
        set aCharPointer to 1
      end if
    end repeat
  else
    –指定文字で作成する文字グラフ
    
repeat with i in bList
      set j to contents of i
      
      
set aLabel to (contents of item iCounter of labelList) as string
      
set aLabel to paddingSpacesAfter(aLabel, tMax, " ") of me
      
      
set resText to (resText & aLabel & tab & tab & makeCharRep(j, charFlag) of me & " " & j as string) & return
      
      
set iCounter to iCounter + 1
      
set aCharPointer to aCharPointer + 1
      
if aCharPointer > aCharLLen then
        set aCharPointer to 1
      end if
    end repeat
  end if
  
  
return resText
end retCharBarChart

–指定文字を指定回数連結したテキストを返す
on makeCharRep(aNum, aChar)
  set aText to ""
  
repeat aNum times
    set aText to aText & aChar
  end repeat
  
return aText
end makeCharRep

–指定文字列に、指定の長さまで空白文字列を追加
on paddingSpacesAfter(aDat as string, targLen as integer, padStr as {boolean, string})
  set dLen to length of aDat
  
if dLen > targLen then error "Logical error: Target length is shorter than data length"
  
copy aDat to aStr
  
  
set padStr to makeCharRep(targLen – dLen, padStr) of me
  
return aStr & padStr
end paddingSpacesAfter

–1D Listで最長の文字列の文字数を返す
on maximumItemLengthFromList(nList as list)
  script o
    property nl : nList
    
property itemNo : 1
  end script
  
  
set max to length of (item 1 of o’s nl)
  
  
repeat with i from 2 to (count nList)
    set n to length of (item i of o’s nl)
    
if n > max then
      set max to n
      
set o’s itemNo to i
    end if
  end repeat
  
return length of (contents of (item (o’s itemNo) of nList))
end maximumItemLengthFromList

★Click Here to Open This Script 

(Visited 6 times, 1 visits today)
Posted in dialog | Tagged 13.0savvy 14.0savvy 15.0savvy 26.0savvy | Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • Numbersで選択範囲のセルの前後の空白を削除
  • macOS 26, Tahoe
  • macOS 15でも変化したText to Speech環境
  • KagiのWebブラウザ、Orion
  • Script Debuggerの開発と販売が2025年に終了
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • macOS 15 リモートApple Eventsにバグ?
  • NSObjectのクラス名を取得 v2.1
  • 2024年に書いた価値あるAppleScript
  • macOS 15:スクリプトエディタのAppleScript用語辞書を確認できない
  • 有害ではなくなっていたSpaces
  • Pixelmator Proがv3.6.8でHDR画像をサポート
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • (確認中)AppleScript Dropletのバグっぽい動作が解消?
  • AVSpeechSynthesizerで読み上げテスト
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • 指定フォルダ以下の画像のMD5チェックサムを求めて、重複しているものをピックアップ
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Numbersで選択中の2列のセルを比較して並べ直して書き戻す v2
  • Script DebuggerがmacOS 15.x上で起動せず→起動

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (151) CotEditor (66) Finder (52) Keynote (119) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (76) Pages (56) Pixelmator Pro (20) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • Scripting Additions
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC