式の関数について
以前、アクション内で使える関数とトリガー内で使える関数は別であるということを書きましたが、これぐらいの差ならば同じほうがいいだろうと思い共用化しました(例えばUUID()関数はトリガーで有効に使える場面はないと思うけど、それも含めてまったく同じですといったほうが説明がしやすいかと思いました)。
以下の関数は、アクションのPreMappings/PostMappingsやコンポーネントの式を入力するプロパティやトリガーの全てで利用できます。
文字列系
基本的にGo言語ライブラリ由来の名前と仕様に全て変えました(ExcelやBasic言語由来の関数も廃止しました)。
Len(s)
文字列の長さ(バイト数)を返す。sが配列やObjectの場合は要素数を返す。
Len(“aÀ漢:あはは:b”) -> 11
RuneCount(s)
文字数を返す
RuneCount(“aÀ漢:あはは:b”) -> 5
Contains(s, substr)
sの中にsubstrが含まれているかBoolで返す
Contains(“aÀ漢:あはは:b”, “À漢”) -> true
HasPrefix(s, prefix)
sがprefixで始まるかBoolで返す
HasPrefix(“https://www.asteria.com/”, “https://”) -> true
HasSuffix(s, suffix)
sがsuffixで終わるかBoolで返す
Index(s, substr)
sの中で最初に現れるsubstrの位置を返す。ない場合は-1
Index(“aÀ漢:あはは:b”, “漢:あはは:”) -> 3
Join(a, sep)
aの配列要素をsepを挟んで1つの文字列にする。
Join([“abc”,“def”], “-”) -> “abc-def”
LastIndex(s, substr)
sの中で最後に現れるsubstrの位置を返す。ない場合は-1
Repeat(s, count)
sをcount回繰り返した文字列を返す
Repeat(“aÀ漢:あはは:b”, 3) -> “aÀ漢:あはは:baÀ漢:あはは:baÀ漢:あはは:b”
Replace(s, old, new[, n])
sの中でold文字列をnew文字列にn回目まで置換する。nが0より小さい時は全て(デフォルトは-1)。
Split(s, sep[, n])
sをsepで最大n個の要素に区切り配列で返す。nが0より小さい時は全て(デフォルトは-1)
Split(“a,b,c”, “,”) -> [“a”, “b”, “c”]
ToLower(s)
sを小文字に変換する
ToUpper(s)
sを大文字に変換する
Trim(s[, cutset])
sの頭と最後のcutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字
Trim(” abc “) -> “abc”
TrimLeft(s[, cutset])
sの頭cutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字
TrimRight(s[, cutset])
sの最後のcutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字
TrimPrefix(s, prefix)
sがprefixではじまっていたら、それを取り除いた文字列を返す。始めっていない場合はsをそのまま返す
TrimPrefix(“https://www.asteria.com”, “https://”) -> “www.asteria.com”
TrimSuffix(s, suffix)
sがsuffixでおわっていたら、それを取り除いた文字列を返す。おわっていない場合はsをそのまま返す
Sprintf(format[, arg…])
Cのprintfに似たフォーマット。
(少し難しいから隠したほうがいいか。整数と浮動小数は使い分けないといけない)
Sprintf(“%d: %s”, ToInt(123), “abc”) -> “123: abc”
型変換系
ToBool(a)
Bool型へ変換
ToInt(a)
整数型へ変換
ToFloat(a)
浮動小数型へ変換
ToDecimal(a)
Decimal型へ変換(Decimal型自体隠しているので、これも隠す)
ToString(a)
文字列型へ変換
ToDate(a)
日時型へ変換
ToBinary(a)
バイト列へ変換
ToJSON(a)
JSON配列型またはJSON Object型へ変換
URLPathEscape(s)
sをURLパスセグメントに安全に配置できる文字列にエスケープする
URLPathEscape(“test1?test2 test3”) -> “test1%3Ftest2%20test3”
URLPathUnescape(s)
URLPathEscapeでエスケープされた文字列をもとに戻す
URLQueryEscape(s)
sをURLクエリに安全に配置できる文字列にエスケープする
URLQueryEscape(“test1?test2 test3”) -> “test1%3Ftest2+test3”
URLQueryUnescape(s)
URLQueryEscapeでエスケープされた文字列をもとに戻す
MD5
バイト列bのMD5を返す
SHA1
バイト列bのSHA1を返す
SHA256
バイト列bのSHA256を返す
BASE64
バイト列bのBASE64を返す。padでtrueを指定すると=パッディングが行われる(デフォルトはtrue)
DecodeBASE64(s[, pad])
BASE64sをデコードする。padでtrueを指定すると=パッディングが行われたBASE64と解釈する(デフォルトはtrue)
BASE64URL
バイト列bをURLまたはファイル名で使用されるBASE64を返す。padでtrueを指定すると=パッディングが行われる(デフォルトはtrue)
DecodeBASE64URL(s[, pad])
BASE64sをデコードする。padでtrueを指定すると=パッディングが行われたBASE64と解釈する(デフォルトはtrue)
日時系
Now([timezone])
今現在の日時の日時型を返す
Year(t[, timezone])
日時型tの年を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。
Month(t[, timezone])
日時型tの月を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。
Day(t[, timezone])
日時型tの日を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。
Hour(t[, timezone])
日時型tの時を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。
Minute(t[, timezone])
日時型tの分を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。
Second(t[, timezone])
日時型tの秒を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。
Weekday(t[, timezone])
日時型tの曜日を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。(0は日曜日)
ToLocal(t)
日時型tをシステムタイムゾーンに変換する
ToUTC(t)
日時型tをUTCに変換する
ToTimezone(t, timezone)
日時型tを指定されたタイムゾーンに変換する
ToTimezone(Now(), “America/New_York”)
DateFormat(t, layout)
日時型tを指定されたレイアウトで文字列に変換する
DateFormat(Now(), “02 Jan 06 15:04 MST”)
DateParse(layout, s[, timezone])
sをlayoutに沿って解釈し日時型を返す
Env(s)
環境変数を返す
RegexMatch(re, s)
正規表現reとsがマッチするかBoolで返す
RegexMatch(“G.*o”, “Gravio HubKit”) -> true
RegexFind(re, s)
正規表現reとsがマッチした最初の文字列を返す
RegexFind(“i.”, “Gravio HubKit”) -> “io”
RegexFindSubmatch(re, s)
正規表現reとsがマッチした最初の文字列と括弧で囲まれた部分式があれば配列で返す
RegexFindSubmatch(“(G.*o) (H.*t)”, “Gravio HubKit”) -> [“Gravio HubKit”, “Gravio”, “HubKit”]
RegexFindAll(re, s[, n])
正規表現reとsがマッチした全ての文字列を配列で返す
RegexFindAll(“i.”, “Gravio HubKit”) -> [“io”, “it”]
RegexReplace(re, s, repl)

Feedback

Was this helpful?

Yes No
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.

Post your comment on this topic.

Post Comment