今年は約11年周期の太陽活動のピークだといいます。
せっかくの話題なので、黒点数を取得するスプリプトを組んでみました。
結論から言いますと、NOAA の太陽活動データ を取得して、そのデータを切り分けて、切り分けたデータから出力したいように切り貼りして出力データを生成します。
出来上がったエラー制御なしの AppleScript は次のようなものです。
![](https://blogimg.goo.ne.jp/user_image/76/3d/e0422a37bdf96069108921a62068f3ee.png)
解説します。
NOAA の太陽活動データは、次のようなものです。
![](https://blogimg.goo.ne.jp/user_image/1f/ce/27b236f70e5f089d8b45019ce1fe6236.png)
ここでは、このデータを加工して、「2013/05/31 : 58」を生成します。「日付: 黒点数」という形式です。
その手順です。
まず、NOAAのデータを取得します。
そのために、AppleScript の 「do shell script」コマンドを使い、シェルの「curl」コマンドを利用して、テキスト形式のNOAA の太陽活動データを取得し、変数orgdata に格納します。
次に、上図のテキストデータが入っている変数orgdata を、切り分けます。
最初の切り分けは、このテキストデータから最新の日付の行のみ(”2013 05 31 102 58 120 0 -999 B2.3 2 1 0 2 0 0 0”)を取り出します。
そのためには、「改行」で切り分けます。AppleScript では「改行」を「return」として扱いますので、「return」を指定して切り分けることで、1行毎のテキストデータがリスト型変数として取り出せます。
ここでは、最新日付が入った行のみを取り出します。
リスト型変数に入っている、最後のアイテムを取り出すには、「last item of」と記述します。
テキスト形式のNOAA の太陽活動データから、最終行のみを取り出す記述が「last item of my bunkai(orgdata, return)」です。
ただし、分解する部分(ここでは「return」)を指定して処理するという手順は、on bunkai(orgdata, delim) ~ end bunkai として、ハンドラ(サブルーチン)として処理をひとまとめにしています。
さらに切り分けて、「年」、「月」、「日」、「黒点数」を取り出します。
先ほどの最終行データ「”2013 05 31 102 58 120 0 -999 B2.3 2 1 0 2 0 0 0”」から、取り出すために AppleScript の「word」を使います。これは便利。「word 1」で「"2013"」、「word 2」で「"05"」、「word 3」で「"31"」、「word 5」で「"58"」が取り出せました。
最後に、切り貼りで出力するテキストデータを生成します。
空の「optxt」に、AppleScript の「&」コマンドを使って次々と追加します。
以上で完成です。
キーワード:AppleScript、curl、黒点数、sunspot number
せっかくの話題なので、黒点数を取得するスプリプトを組んでみました。
結論から言いますと、NOAA の太陽活動データ を取得して、そのデータを切り分けて、切り分けたデータから出力したいように切り貼りして出力データを生成します。
出来上がったエラー制御なしの AppleScript は次のようなものです。
![](https://blogimg.goo.ne.jp/user_image/76/3d/e0422a37bdf96069108921a62068f3ee.png)
解説します。
NOAA の太陽活動データは、次のようなものです。
![](https://blogimg.goo.ne.jp/user_image/1f/ce/27b236f70e5f089d8b45019ce1fe6236.png)
ここでは、このデータを加工して、「2013/05/31 : 58」を生成します。「日付: 黒点数」という形式です。
その手順です。
まず、NOAAのデータを取得します。
そのために、AppleScript の 「do shell script」コマンドを使い、シェルの「curl」コマンドを利用して、テキスト形式のNOAA の太陽活動データを取得し、変数orgdata に格納します。
次に、上図のテキストデータが入っている変数orgdata を、切り分けます。
最初の切り分けは、このテキストデータから最新の日付の行のみ(”2013 05 31 102 58 120 0 -999 B2.3 2 1 0 2 0 0 0”)を取り出します。
そのためには、「改行」で切り分けます。AppleScript では「改行」を「return」として扱いますので、「return」を指定して切り分けることで、1行毎のテキストデータがリスト型変数として取り出せます。
ここでは、最新日付が入った行のみを取り出します。
リスト型変数に入っている、最後のアイテムを取り出すには、「last item of」と記述します。
テキスト形式のNOAA の太陽活動データから、最終行のみを取り出す記述が「last item of my bunkai(orgdata, return)」です。
ただし、分解する部分(ここでは「return」)を指定して処理するという手順は、on bunkai(orgdata, delim) ~ end bunkai として、ハンドラ(サブルーチン)として処理をひとまとめにしています。
さらに切り分けて、「年」、「月」、「日」、「黒点数」を取り出します。
先ほどの最終行データ「”2013 05 31 102 58 120 0 -999 B2.3 2 1 0 2 0 0 0”」から、取り出すために AppleScript の「word」を使います。これは便利。「word 1」で「"2013"」、「word 2」で「"05"」、「word 3」で「"31"」、「word 5」で「"58"」が取り出せました。
最後に、切り貼りで出力するテキストデータを生成します。
空の「optxt」に、AppleScript の「&」コマンドを使って次々と追加します。
以上で完成です。
キーワード:AppleScript、curl、黒点数、sunspot number