Project Siena では、このトピックで説明される演算子と関数を使用できます。
次の例で使用するデータの参照はすべて架空のものです。このリファレンスに付属するデータ サンプルはありません。
演算子
Project Siena は、次の演算子をサポートしています。
シンボル |
演算子の型 |
構文 |
説明 |
( ) |
かっこ |
Filter(T, A < 10) (1 + 2) * 3 |
優先順位を適用し、より大きな式の中の部分式をまとめます |
+ |
算術演算子 |
1 + 2 |
加算 |
- |
2 - 1 |
減算と符号 |
|
* |
2 * 3 |
乗算 |
|
/ |
2 / 3 |
除算 |
|
^ |
2 ^ 3 |
指数演算 |
|
% |
20% |
パーセント ("* 1/100" に等しい) |
|
= |
比較演算子 |
Price = 100 |
等しい |
> |
Price > 100 |
より大きい |
|
>= |
Price >= 100 |
以上 |
|
< |
Price < 100 |
より小さい |
|
<= |
Price <= 100 |
以下 |
|
<> |
Price <> 100 |
等しくない |
|
& |
文字列の連結演算子 |
"hello" & " " & "world" |
連結 |
&& |
論理演算子 |
Price < 100 && slider!value = 20 |
論理積 |
|| |
Price < 100 || slider!value = 20 |
論理和 |
|
! |
!(Price < 100) |
論理否定 |
|
exactin |
メンバーシップの演算子 |
gallery!Selected exactin SavedItems |
コレクションまたはテーブルに属します |
exactin |
"Windows" exactin “To display windows in the Windows operating system...” |
部分式の検査 (大文字と小文字の区別あり) |
|
in |
gallery!Selected in SavedItems |
コレクションまたはテーブルに属します |
|
in |
"The" in "The keyboard and the monitor..." |
部分式の検査 (大文字と小文字の区別なし) |
|
@ |
あいまいさ解消演算子 |
MyTable[@fieldname] |
フィールドのあいまいさ解消 |
[@MyTable] |
グローバルあいまいさ解消 |
||
; |
式の連鎖 |
Collect(T, A); Navigate(S1, "") |
動作プロパティの関数の各呼び出しを区切ります |
in および exactin 演算子
in および exactin 演算子を使用して、コレクションやインポートしたテーブルなどのデータ ソースの中で文字列を検索できます。in 演算子は大文字/小文字を区別せずに一致を識別し、exactin 演算子は大文字化が同一の場合にのみ、一致として識別します。
これらの演算子の働きの非常に単純な例として、以下のステップに従ってください。
ボタンの OnSelect プロパティをこの関数に設定することにより、Instruments という小さなコレクションを作成し、F5 キーを押してから、次のボタンをクリックします。
Collect(Instruments, “Violins”, “Trombones”, “Bongos”)
Esc キーを押してデザイン ワークスペースに戻り、Alt-F を押し、[アプリのデータ] をクリックしてから [コレクション] をクリックします。
作成したコレクションのプレビューが表示されます。
ラベルの Text プロパティを次のような式に設定します。
“Violins” in Instruments
ラベルは “true” を表示して、コレクションに Violins という項目が含まれていることを示します。
ラベルの Text プロパティを次のような式に設定します。
“Trumpets” in Instruments
ラベルは “false” を表示して、コレクションに Trumpets という項目が含まれていないことを示します。
ラベルの Text プロパティを次のような式に設定します。
“violins” exactin Instruments
ラベルは “false” を表示して、コレクションに violins というすべて小文字の項目が含まれていないことを示します。
これらの演算子の動作を示すより複雑な例として、以下のステップに従ってください。
次の表に類似するようにデータをインポートするかデータの収集し、データ ソースに RevenueLedger という名前を付けます。
製品
Year
Revenue
Violins
2014
$28,000
Violins
2013
$26,000
ボンゴ
2014
$23,000
Violins
2012
$21,000
Trombones
2014
$21,000
ボンゴ
2013
$19,000
Trombones
2013
$17,000
Trombones
2012
$15,000
ボンゴ
2012
$14,000
テキスト入力コントロールを追加し、SearchString という名前を付けます。
し、その Items プロパティに以下の関数を設定します。
Filter(RevenueLedger, SearchString!Text in Product)
SearchString ボックスに “v” (引用符は含めない) を入力します。
ギャラリーは、バイオリンに関する情報だけを表示します。
ギャラリーの Items プロパティで in を exactin に変更します。
ギャラリーは空になります。コレクション内のどの項目も、SearchString ボックス内の小文字を含んでいないからです。
ギャラリー用の ThisItem 演算子 - CustomGallery など
カスタム ギャラリーはテーブルまたはコレクションにバインドできます。このコントロールは、ユーザー定義テンプレート (CustomGallery テンプレートに各種のコントロールを追加することにより、何を表示するかをユーザーが決定する) の十分なインスタンスを作成し、バインドされるテーブルやコレクションのすべての行を表示します。ThisItem 参照演算子を使用して、テンプレート インスタンスから個々のテンプレート インスタンスがバインドされた行を参照します。
たとえば、FirstName、LastName、Organization、および OfficeLocation 列が含まれている Employees テーブルにカスタム ギャラリーをバインドできます。さらに、それぞれの列の値を表示するために、4 つのラベルをギャラリー テンプレートに追加できます。この場合、ラベルのテキスト プロパティを次のように設定できます。
ThisItem!FirstName
ThisItem!LastName
ThisItem!Organization
ThisItem!OfficeLocation
入れ子になったギャラリーの場合、ThisItem は最も内側のギャラリーの項目を参照します。内側のギャラリーと外側のギャラリーの行フィールドが競合しないと仮定した場合は、非修飾フィールド (列) の名前を直接使用することもできます。これにより、内側のギャラリーのルールが外側のギャラリーの項目を参照できるようになります。
関数
Project Siena は、次の関数をサポートしています。Excel の関数を使用しているなら、これらの多くを知っていることでしょう。
注意
このトピックの構文セクションでは、斜体は汎用テキストを示し、使用しているアプリに固有の値と置き換えます。また、角かっこで囲まれているのはオプションの引数です。オプション引数の前にコンマが示されている場合、その引数を使用するときにはその前にコンマを含める必要があります。
カテゴリ別の関数
Boolean -- And、If、IsBlank、IsEmpty、Not、Or
コレクション -- Clear、Collect、LoadData、Remove、RemoveIf、SaveData
日付と時刻 -- Date、DateAdd、DateDiff、DateTimeValue、DateValue、Day、Hour、Minute、Month、Now、Second、時間、TimeValue、Today、Year
算術 -- Abs、Average、Max、Min、Rand、Round、RoundDown、RoundUp、Sqrt、StdevP、Sum、VarP
その他 -- ColorFade、ColorValue、Disable、Enable、Launch、Language、Navigate、更新、RGBA、 UpdateContext
文字列 -- Char、Concat、Concatenate、EncodeUrl、Find、 HashTags、Len、Left、Lower、PlainText、Proper、 Right、Substitute、テキスト、Trim、Upper、Value
テーブル -- AddColumns、Count、CountA、CountIf、 CountRows、Distinct、DropColumns、Filter、First、 FirstN、Last、LastN、LookUp、RenameColumns、 Replace、Sort、Shuffle、ShowColumns、テーブル、 Update、UpdateIf
Abs
構文 |
Abs(Number) Abs(ColumnExpression) |
説明 |
数値の絶対値、つまり、符号のない数字を返します。
|
例 |
Abs(-55) は 55 を返します。 たとえばテーブルに Trend という名前の列が含まれている場合、Trend 列のそれぞれの数値の絶対値を戻すには、結果列で Abs(Trend) を使用できます。 ![]() |
AddColumns
構文 |
AddColumns(Table, Column1, Expression1[, Column2, Expression2, ...]) |
説明 |
指定した式を元の入力テーブルの行に照らして評価した結果を含む、1 行以上の列が追加されたテーブルを返します。 |
例 |
Sales テーブルがあり、そのテーブルに CostPerUnit 列と UnitsSold 列が含まれているとすると、これら 2 つの列に加えて、TotalSales という名前で、最初の 2 つの列の値の乗算結果を示す 3 番目の列が入った 2 番目のテーブルを作成できます。 AddColumns(Sales, "TotalSales", CostPerUnit * UnitsSold) ![]() 注意 この関数は、元のテーブルを変更することはありません。 Employees テーブルがあり、そのテーブルに FirstName 列と LastName 列が含まれているとすると、これら 2 つの列に加えて、FullName という名前で、最初の 2 つの列の文字列の連結結果を示す 3 番目の列が入った 2 番目のテーブルを作成できます。 AddColumns(Employees, "FullName", FirstName & " " & LastName) |
And
構文 |
And(LogicalExpression1[, LogicalExpression2, ...]) |
説明 |
1 つ以上のブール値または部分式がすべて true かどうかを判別します。(インライン && 演算子と同じ結果になります。) |
例 |
次の関数は、スライダーの値が 50 と 100 の間にあるかどうかを判別します。 And(Slider1!Value > 50, Slider1!Value < 100) テーブルに Dept 列と Salary 列が含まれているとすると、結果列で次の関数を使用し、Dept 列の値が HR で、Salary 列の値が 200000 より大きいすべての行に True を示すことができます。 And(Dept = "HR", Salary > 200000) ![]() こうした関数で && 演算子を使用しても、前の例と同じ結果が戻ります。 Slider1!Value > 50 && Slider1!Value < 100 Dept = HR && Salary > 200000 |
Average
構文 |
Average(Table, Expression) Average(Expression1[, Expression2, …]) |
説明 |
引数の平均 (算術平均) を返します。次のようなコンテキストでこの関数を使用できます。
|
例 |
CostPerUnit 列と UnitsSold 列が含まれている Sales テーブルがある場合、次の関数は平均売上を計算します。 Average(Sales, CostPerUnit * UnitsSold) 3 つのスライダーがある場合、次の関数はそれらの値の平均を計算します。 Average(Slider1!Value, Slider2!Value, Slider3!Value) |
Char
構文 |
Char(Number) |
説明 |
指定した値に基づいて、プラットフォームに応じた適切な ASCII 文字を返します。 |
使用例 |
Char(65) は次を返します。 A Char(105) は次を返します。 i Char(35) は次を返します。 # |
Clear
構文 |
Clear(Collection) |
説明 |
コレクションからすべての項目を消去し、空のコレクションを返します。 重要 この関数は基になるコレクションを変更します。 |
使用例 |
コレクションが空であることを確認するため、コントロールでもボタンでもない場所を右クリックし、[アプリのデータ] をクリックしてから [コレクション] をクリックします。 別の例については、「」をご覧ください。 |
Collect
構文 |
Collect(CollectionName, Item1[, Item2,...]) |
説明 |
表、表内の列、または 1 つ以上の個々の項目をコレクションに追加します。指定したコレクションが存在しない場合、この関数はコレクションを作成して項目を追加します。 重要 この関数は基になるコレクションを変更します。 |
例 |
|
ColorFade
構文 |
ColorFade(Color, FadeDelta) |
説明 |
-1 から 1 の範囲 (両端を含む) のフェード デルタに基づいて、色のフェード バージョンを返します。 |
例 |
ColorFade(Color!AliceBlue, -1) ColorFade(Color!DarkBlue, 1) ColorFade(RGBA(255, 255, 255, 1), 1) |
ColorValue
構文 |
ColorValue(ColorText) |
説明 |
CSS (カスケード スタイル シート) のカラー文字列に対応する色の値を返します。 |
例 |
ColorValue("Blue") ColorValue("Fuschia") |
Concat
構文 |
Concat(CollectionName, Expression) |
説明 |
指定のデータ ソースで指定した列のすべての文字列を連結します。コレクション内のデータまたは、たとえば、Excel あるいは SharePoint リストからインポートしたデータを連結できます。 |
例 |
1.ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。 Collect(Products, {String:"Violin", Wind:"Trombone", Percussion:"Bongos"}, {String:"Cello", Wind:"Trumpet", Percussion:"Tambourine"}) 2.F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。 3.ラベルを追加し、その [テキスト] プロパティを以下の関数に設定します。 Concat(Products, String & " ") ラベルは「Violin Cello」を表示します。 |
Concatenate
構文 |
Concatenate(Text1[, Text2, ...]) Concatenate(ColumnExpression1[, ColumnExpression2, ...]) |
説明 |
複数のテキスト文字列を結合して 1 つの文字列にします。または、テキストを返すがテーブルの別々の列に表示される、複数の式の出力を連結し、連結されたテキストを独自の列に返します。 |
例 |
AuthorName という名前の入力テキスト コントロールを作成した場合、次の関数は、ユーザーがコントロールに入力したテキストの前に "By" を付加します。 Concatenate("By ", AuthorName!Text) FirstName 列と LastName 列が含まれている Employees テーブルがある場合、次の関数は、それらの列の各行にあるデータを連結します。 Concatenate(Employees!FirstName, " ", Employees!LastName) |
Count
構文 |
Count(Column) |
説明 |
数値だけが入っているテーブルの列のセルを数えます。 |
使用例 |
|
CountA
構文 |
CountA(Column) |
説明 |
あるテーブルの列で、空ではないセルの数を数えます。この関数では、カウントにエラーの値および空のテキスト ("") も含みます。 |
使用例 |
|
CountIf
構文 |
CountIf(Table, Expression) |
説明 |
テーブル内で、指定された条件を満たす行を数えます。 |
使用例 |
Salary という名前の列が含まれている Employees という名前のテーブルがある場合、次の関数は給与が 100,000 を超える社員の数を数えます。 CountIf(Employees, Salary > 100000) |
CountRows
構文 |
CountRows(Table) |
説明 |
テーブル内の行を数えます。 |
使用例 |
Employees という名前のテーブルがある場合、次の関数はそのテーブル内の行数を数えます。 CountRows(Employees) |
Date
構文 |
Date(Year, Month, Day) |
説明 |
指定した日付を表す、連続した通し番号を返します。DateValue 関数を使用して日付表示をカスタマイズできます。
|
使用例 |
ユーザーが、HireYear という名前の入力テキスト コントロールに 1979、HireMonth という名前の入力テキスト コントロールに 3、HireDay という名前の入力テキスト コントロールに 17 を入力した場合、この関数は 3/17/1979 を返します。 Date(Value(HireYear!Text), Value(HireMonth!Text), Value(HireDay!Text)) |
DateAdd
構文 |
DateAdd(Date, NumberOfUnits[, Units]) |
説明 |
指定された日付に指定された数の時間単位 (日、四半期、月、または年) を足した日付を返します。最初の引数は元の日付を指定し、2 番目の引数は加算する時間単位の数を指定します。既定では、この関数は Days を加算しますが、3 番目の省略可能な引数を使用して、元の日付に Months、Quarters、または Years を加算できます。 |
例 |
今日の日付が 7/15/2013 の場合:
|
DateDiff
構文 |
DateDiff(StartDate, EndDate[, Units]) |
説明 |
2 つの日付の差を返します。既定では、この関数は結果を Days で返しますが、3 番目の省略可能な引数を指定して結果を Years、Quarters、または Months で返すことができます。 |
例 |
今日の日付が 7/15/2013 の場合: DateDiff(Now(), 1/1/2014) と DateDiff(Now(), 1/1/2014, Days) は、両方とも 170 日を返します。 DateDiff(Now(), 1/1/2014, Months) は 6 か月を返します。 |
DateTimeValue
構文 |
DateTimeValue(DateTimeText) DateTimeValue (DateTimeText, "LanguageCode") |
説明 |
日付と時刻のテキスト表現を、2 つの日付の比較などの算術演算または Boolean 演算を実行できる値に変換します。また、スラッシュで区切られた日付が MM/DD/YYYY や DD/MM/YYYY のように、適切に解釈されるよう、言語コードを指定することもできます。 |
例 |
Start というテキスト入力コントロールに「10/11/2014 1:50:24.765 PM」と入力し、ラベルの Text プロパティを次の関数に設定した場合:
|
DateValue
構文 |
DateValue(DateText) DateValue (DateText, "LanguageCode") |
説明 |
日付のテキスト表現を、2 つの日付の比較などの算術演算または Boolean 演算を実行できる値に変換します。ソース データは、次のいずれかのパターンに従っている必要があります。
また、スラッシュで区切られた日付が MM/DD/YYYY や DD/MM/YYYY のように、適切に解釈されるよう、言語コードを指定することもできます。 |
例 |
Startdate というテキスト入力コントロールに「10/11/2014」と入力し、ラベルの Text プロパティを次の関数に設定した場合:
2014 年 10 月 20 日に同じことをした場合:
|
Day
構文 |
Day(DateTime) |
説明 |
DateValue 関数の日を返します。戻り値の範囲は 1 ~ 31 です。 |
使用例 |
Text1 という名前の入力テキスト コントロールを追加した場合、ユーザーがそのコントロールに次のいずれかの文字列を入力すると、Day(DateValue(Text1!Text)) は、15 を返します。 07/15/2013 15 July 2013 July 15, 2013 |
Disable
構文 |
Disable(Signal) |
説明 |
信号データ ソースを無効にして、アプリがそこから信号 (データ) をプルできないようにします。このリリースでサポートされている信号データ ソースは、位置だけです。 |
使用例 |
Disable(Location) |
Distinct
構文 |
Distinct(Table, Expression) |
説明 |
テーブルの 1 つ以上の列について式を評価し、式の評価で得られる異なる値を内容とする 1 列のテーブルを返します。 |
使用例 |
Department 列が含まれている Employees テーブルがある場合、次の関数はその列にある各部門の一意の名前を一覧表示します。個々の名前がその列に出現する回数は問題ではありません。 Distinct(Employees, Department) |
DropColumns
構文 |
DropColumns(Table, Column1[, Column2, …]) |
説明 |
指定したテーブルに基づくが、指定した列を含まないテーブルを返します。 |
使用例 |
FirstName 列、LastName 列、および Address 列が含まれている Employees テーブルがある場合、次の関数はこれらの列を含まないという点だけが異なる同じテーブルを返します。 DropColumns(Employees, "FirstName", "LastName", "Address") |
Enable
構文 |
Enable(Signal) |
説明 |
信号データ ソースを有効にして、アプリがそこからデータ (信号) をプルできるようにします。このリリースでサポートされている信号データ ソースは、位置だけです。 |
使用例 |
Enable(Location) |
EncodeUrl
構文 |
EncodeUrl(Text) |
説明 |
URL を表す文字列内にある英数字以外の文字のすべてのインスタンスをエンコードします。たとえば、「差出人:」、「宛先:」、「件名:」、「本文:」フィールドを含む文字列をマージしてメール リンクを作成するために、この関数を使用できます。 |
使用例 |
EncodeUrl("'http://example/page/url.aspx") は次を返します。 %27http%3A%2F%2Fexample%2Fpage%2Furl.aspx |
Filter
構文 |
Filter(Table, Condition1[, Condition2, ...]) |
説明 |
指定した条件を満たす、指定したテーブル内の行を返します。既定では、複数の条件を指定した場合は、And (つまり、&&) 結合が使用されます。 |
使用例 |
Salary 列が含まれている Employees テーブルがある場合、次の関数は給与が 100,000 を超える社員を識別します。 Filter(Employees, Salary > 100000) この関数の使用方法について詳しくは、「」をご覧ください。 |
Find
構文 |
Find(FindText, WithinText[, StartNum]) |
説明 |
1 つの文字列が別の文字列内で最初に出現する位置を識別します。最初の引数は、別の文字列内で検索する対象の文字列を指定します。2 番目の引数は、検索するための文字列を指定します。3 番目の省略可能な引数を含めることによって、検索している文字列内の特定の位置より前のインスタンスをすべて無視できます。この関数は大文字と小文字を区別し、検索している文字列内に検索対象の文字列が出現しない場合は、何も返しません。 |
使用例 |
Find("me", "time") は、"time" 内の 3 文字目から "me" が出現するため、3 を返します。 Find("my", "time") は、"time" 内のどこにも "my" が出現しないため、何も返しません。 Find("in", "Honorificabilitudinitatibus", 4) は 18 を返します。 Find("in", "Honorificabilitudinitatibus", 19) は、18 文字目より後で一致が見つからなかったため、何も返しません。 |
First
構文 |
First(Table) |
説明 |
指定したテーブルの最初の行を返します。 |
使用例 |
Employees テーブルがある場合、次の関数はそのテーブルの最初の行を返します。 First(Employees) |
FirstN
構文 |
FirstN(Table[, NumRows]) |
説明 |
指定したテーブルの最初から指定した分の行数を返します。NumRows 引数はオプションです。指定しない場合は、最初の行だけが返されます。 |
使用例 |
Employees テーブルがある場合、この関数はそのテーブルの最初の 10 行を返します。 FirstN(Employees, 10) |
HashTags
構文 |
HashTags(Text) |
説明 |
ポンド記号 (#) で始まり、以下の種類の文字の任意の組み合わせを含むハッシュタグのリストを作成します。
リストされるハッシュタグには、他の特殊文字は含められません。 |
使用例 |
|
Hour
構文 |
Hour(DateTime) |
説明 |
指定された TimeValue の「時間」を、0 (12:00:00 A.M.) 以上 23 (11:00:00 P.M.) 以下の数字で返します。 |
使用例 |
EventTime という入力コントロールの Text プロパティを Hour(TimeValue(EventTime!Text)) に設定した場合、このコントロールに「10:20:30 PM」と入力すると、ラベルに 22 と表示されます。 |
If
構文 |
If(Condition1, Result1[, Condition2, Result2, ConditionN, ResultN, DefaultResult]) |
説明 |
一致した最初の条件に対応する結果を返します。いずれの条件も一致しない場合、Default 結果が返されます。文字列を結果として指定する場合は、その文字列を引用符で囲む必要があります。 |
例 |
手動で入力したデータでこの関数を使用するには、以下のようにします。
コレクションでこの関数を使用するには、以下のようにします。
|
IsBlank
構文 |
IsBlank(Expression) |
説明 |
その式が空白 (値なし) と評価された場合は true を返し、それ以外の場合は、false を返します。たとえば、この関数を If 関数と組み合わせて使用することにより、ユーザーが必須フィールドを空白にした場合に通知を出すことができます。 |
使用例 |
オーダー フォームに Quantity というテキスト入力コントロールを作成し、ラベルを追加して Text プロパティを If(IsBlank(Quantity!Text), "Please add a quantity.") に設定すると、そのフォームで量を指定し忘れた場合に注意喚起がなされます。 |
IsEmpty
構文 |
IsEmpty(Source) |
説明 |
テーブルまたはコレクションにデータが含まれているかどうかを識別します。 |
使用例 |
Employees という名前のテーブルにデータが含まれている場合、IsEmpty(Employees) は false を返し、それ以外の場合、この関数は true を返します。 |
Language
構文 |
Language() |
説明 |
未公開のアプリの場合、優先する言語から現在アクティブな言語を返します。Project Siena が開いている間に優先する言語を変更した場合、変更がこの関数で反映されるようにするために、Project Siena を再起動する必要があります。 公開済みのアプリの場合、この関数は、公開される直前にアプリのブランド化に使用された言語を返します。 |
使用例 |
Language() は、構成に基づいて en-US などを返します。 |
Last
構文 |
Last(Table) |
説明 |
指定したテーブルの最後の行を返します。 |
使用例 |
Employees という名前のテーブルがある場合、次の関数はそのテーブルの最後の行を返します。 Last(Employees) |
LastN
構文 |
LastN(Table[, NumRows]) |
説明 |
テーブルの最後から指定した分の行数を返します。NumRows 引数はオプションです。指定しない場合、この関数は最後の行だけを返します。 |
使用例 |
Employees という名前のテーブルがある場合、次の関数はそのテーブルの最後の 15 行を返します。 LastN(Employees, 15) |
Launch
構文 |
Launch(Hyperlink) |
説明 |
指定したハイパーリンクに関連付けられたアプリを実行し、ハイパーリンクそのものを開きます。 |
使用例 |
Launch("http://www.bing.com") 別の例については、「Project Siena アプリで RSS フィードを表示する」を参照してください。 |
Left
構文 |
Left(Text, NumChars) Left(ColumnExpression, NumericExpression) |
説明 |
指定した文字列の最初から指定した数の文字を返します。 |
例 |
手動で入力したデータでこの関数を使用するには、以下のようにします。
コレクション内のデータでこの関数を使用するには、以下のようにします。
|
Len
構文 |
Len(Text) Len(ColumnExpression) |
説明 |
|
例 |
Password というテキスト入力コントロールに「F@V0riteBandName」と入力すると、Len(Password!Text) は 16 を返します。 |
LoadData
構文 |
LoadData(Collection, Filename) |
説明 |
指定したファイルのデータを復号化し、指定したコレクションにそれを挿入します。アプリのローカル ストレージにアプリケーション データを保存したり、ローカル ストレージからアプリケーション データを読み出したりするには、この関数を SaveData 関数と共に使用します。 LoadData は非同期関数で、述語では使用できません。LoadData 自身はスキーマを提供しないため、LoadData の結果は既知のスキーマを持つコレクションにパイプすることをお勧めします。 |
使用例 |
別の例については、「」をご覧ください。 |
LookUp
構文 |
LookUp(Table, Condition, Expression) |
説明 |
この関数は 3 つの引数をとります。テーブル、そのテーブルの各行について true か false かを評価する条件、そして式です。条件が true と評価される最初の行について、式が評価され、結果が返されます。 |
使用例 |
FirstName 列と LastName 列が含まれている Employees テーブルがある場合、次の関数は "John Smith" という名前の従業員の給与を返します。 LookUp(Employees, FirstName = "John" && LastName = "Smith", Salary) |
Lower
構文 |
Lower(Text) Lower(ColumnExpression) |
説明 |
|
例 |
ユーザーからのデータでこの関数を使用するには、以下のようにします。
コレクション内のデータでこの関数を使用するには、以下のようにします。
|
Max
構文 |
Max(Table, Expression) Max(Expression1[, Expression2, ...]) |
説明 |
引数の中の最大の値を返します。 |
例 |
CostPerUnit 列と UnitsSold 列が含まれている Sales テーブルがある場合、次の関数はそのテーブルの最高売上高を計算します。 Max(Sales, CostPerUnit * UnitsSold) この関数は 3 つのスライダーの中の最大値を計算します。 Max(Slider1!Value, Slider2!Value, Slider3!Value) |
Mid
構文 |
Mid(Text, StartPosition, NumChars) Mid(TextColumn, StartPositions, NumChars) |
説明 |
抽出対象の開始文字の位置と文字数を指定した場合に、文字列からの複数の文字を返します。この関数は文字列のテーブルに対して実行できます。 |
例 |
手動で入力したデータでこの関数を使用するには、以下のようにします。
コレクションでこの関数を使用するには、以下のようにします。
|
Min
構文 |
Min(Table, Expression) Min(Expression1[, Expression2, …]) |
説明 |
引数の中の最小の値を返します。 |
例 |
CostPerUnit 列と UnitsSold 列が含まれている Sales テーブルがある場合、この関数はそのテーブルの最低売上高を計算します。 Min(Sales, CostPerUnit * UnitsSold) この関数は 3 つのスライダーの中の最低値を計算します。 Min(Slider1!Value, Slider2!Value, Slider3!Value) |
Minute
構文 |
Minute(DateTime) |
説明 |
指定された TimeValue の「分」を、0 以上 59 以下の数字で返します。 |
使用例 |
EventTime という入力コントロールの Text プロパティを Minute(TimeValue(EventTime!Text)) に設定した場合、このコントロールに「10:20:30 PM」と入力すると、ラベルに 20 と表示されます。 |
Month
構文 |
Month(DateTime) |
説明 |
指定された DateValue の「月」を、1 以上 12 以下の数字で返します。 |
使用例 |
関数 Month(DateValue("03/17/1979")) は 3 を返します。 |
Navigate
構文 |
Navigate(TargetScreen, Animation[, Context]) |
説明 |
ビューを、指定したターゲット画面に変更します。サポートされている移行のアニメーションは ScreenTransition!Cover、ScreenTransition!UnCover、および ScreenTransition!Fade です。Context 引数を指定すると、状態/コンテキスト レコードをターゲット画面に渡すことができます。ターゲット画面ではそのレコードを使用して計算を導くことができます。ターゲット画面には、コンテキスト レコードのフィールドに対する非修飾アクセス権限があります。 重要 Context レコードをターゲット画面に渡す場合、このレコードの独自のコンテキストは変更される場合があります。 |
例 |
DetailView 画面がある場合、次の関数はその画面にフェード インして、ソースを文字列値 "Ravens" に設定する状態を渡します。 Navigate(DetailView, ScreenTransition!Fade, {source: "Ravens"}) DetailView 画面がある場合、次の関数はその画面にフェード インします。 Navigate(DetailView, ScreenTransition!Fade) DetailView 画面がある場合、次の関数はその画面をアニメーションなしで表示します。 Navigate(DetailView, "") |
Not
構文 |
Not(BooleanExpression) |
説明 |
ブール式の論理否定を計算します。 |
使用例 |
次の関数はオプション ボタンが選択されていないことを確認します。 Not(RadioButton1!Selected) |
Now
構文 |
Now() |
説明 |
現在の日付と時刻を、デバイスのロケール固有の形式で返します。書式を設定するには、テキスト 関数を使用します。 |
使用例 |
今日が 2014 年 10 月 11 日、午後 3:25 ちょうどであり、ラベルのテキスト プロパティを Text(Now(), "mm/dd/yyyy hh:mm:ss.fff") に設定した場合、ラベルは「10/11/2014 3:25:00:000 PM」と表示します (コンピューターが en 言語コードに設定されていた場合)。コンピューターが fr 言語コードに設定されていた場合には、ラベルは「11/10/2014 3:25:00:000 PM」と表示します。 または、hh:mm:ss.f または hh:mm:ss.ff を指定して、時刻を少数第 2 位または小数第 3 位で四捨五入することもできます。 秒の小数部がアプリで重要でない場合、DateTimeFormat パラメーターを使用して、日付、時刻、またはその両方をいくつかの組み込み形式のいずれかで指定することができます。たとえば、この例の関数を Text(Now(), DateTimeFormat!ShortDateTime) で置き換えて、同じ結果からミリ秒を除いたものを取得することができます。このパラメーターのオプションの一覧を表示するには、パラメーターの直後に感嘆符を付けて関数のボックスに入力します。 |
Or
構文 |
Or(LogicalExpression1[, LogicalExpression2, ...]) |
説明 |
指定された式のいずれかが true であれば、true を返します。そうでない場合、false を返します。これに対して、And 関数は、指定されたすべての式が true の場合にのみ true を返します。 Or 関数は、インライン || 演算子を使用する場合と同じ結果になります。 |
例 |
次の関数を使用して、スライダーの値が 50 から 100 までの範囲外かどうかを判別できます。 Or(Slider1!Value < 50, Slider1!Value> 100) テーブルに Dept 列と Salary 列が含まれているとすると、結果列で次の関数を使用し、Dept 列の値が HR であるか、Salary 列の値が 200000 より大きいすべての行に True を示すことができます。 Or(Dept = HR, Salary >= 200000) 代わりに || 演算子を使用して、前の関数が返すのと同じ結果を得ることもできます。 Slider1!Value < 50 || Slider1!Value> 100 Dept = "HR" || Salary > 200000 |
PlainText
構文 |
PlainText(TextWithTags) |
説明 |
HTML タグや XML タグをテキストから取り除くか、またはそれらのタグを該当するシンボルに変換します。 |
例 |
テキスト ギャラリーを RSS フィードにバインドしてから、そのギャラリーの中のラベルの Text プロパティ (Data カテゴリ内) を ThisItem!description に設定した場合、ラベルは次の例のように、生の HTML コードまたは XML コードを表示します。 <p>We have done an unusually "deep" globalization and localization.<p> ラベルの Text プロパティを PlainText(ThisItem!description) に設定した場合には、次の例のようにテキストが表示されます。 We have done an unusually "deep" globalization and localization. |
Proper
構文 |
Proper(Text) Proper(ColumnExpression) |
説明 |
テキスト文字列の単語を適切な大文字小文字に変換します。つまり、各単語の最初の文字は大文字になり、他の文字は小文字になります。
|
例 |
ユーザーからのデータでこの関数を使用するには、以下のようにします。
コレクション内のデータでこの関数を使用するには、以下のようにします。
|
Rand
構文 |
Rand() |
説明 |
0 以上 1 未満の擬似乱数値を返します。 |
使用例 |
Rand() は 0.85116235、0.76728732、0.27591115 や、その他の 0 以上 1 未満の数値を返します。 |
更新
構文 |
Refresh(ServiceDataSource) |
説明 |
アプリが最新の状態であるように、指定したデータ ソースのデータを最新表示します。 重要 この関数を使用して Excel の表からのデータを最新表示することはできません。Excel データを扱う方法の例については、Project Siena アプリで Excel のデータを表示する を参照してください。 |
使用例 |
rss_1 という名前の RSS フィードを追加した場合、Refresh(rss_1) はそのフィードを最新表示します。 |
Remove
構文 |
Remove(Collection, Record1[, Record2, ..., All]) Remove(Collection, Table[, All]) |
説明 |
コレクションから 1 行以上の行を削除します。コレクションは重複するレコードを持つことができるため、この関数は重複を削除するオプションの引数 All も受け入れます。 重要 この関数は基になるコレクションを変更します。 |
使用例 |
|
RemoveIf
構文 |
RemoveIf(Collection, Condition1[, Condition2 ...]) |
説明 |
指定した条件を満たすすべての行をコレクションから削除し、変更されたコレクションを返します。 |
使用例 |
Price という名前のフィールドが含まれた ShoppingCart という名前のコレクションがある場合、次の関数は、価格が 200 を超えるすべての項目をコレクションから削除します。 RemoveIf(Cart, Price > 200) |
RenameColumns
構文 |
RenameColumns(CollectionName, "OldName", "NewName") |
説明 |
1 つの列の名前が異なること以外はデータ ソースと同じデータの一時テーブルを作成します。コレクション内の列または Excel や SharePoint リストなどからインポートしたデータの名前を変更できます。 |
例 |
1.ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。 Collect(Products, {String:"Violin", Wind:"Trombone", Percussion:"Bongos"}, {String:"Cello", Wind:"Trumpet", Percussion:"Tambourine"}) 2.F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。 3.ユーザー設定ギャラリーを追加し、それに TableHolder という名前を付け、[項目] プロパティを以下の関数に設定します。 RenameColumns(Products, "String", "Strings") 4.2 つ目のボタンを追加し、その OnSelect プロパティを以下の関数に設定します。 Collect(Products2, TableHolder!AllItems) 5.F5 キーを押し、作成したボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。 6.Alt を押しながら F を押し、[アプリのデータ] をクリックし、次に [コレクション] をクリックします。 7.Products と Products2 という名前のコレクションがあり、Products に String、Products2 に Strings という名前の列があることを確認します。 |
Replace
構文 |
Replace(Text, StartIndex, Count, NewText) Replace(Column, StartIndex, Count, NewText) |
説明 |
置換対象の開始文字の場所と文字数を指定して、テキスト文字列の一部を、別のテキスト文字列に置き換えます。この関数は文字列のテーブルに対して実行できます。 |
例 |
Replace("ABCDEFG", 3, 2, "X") は ABXEFG を返します。 |
RGBA
構文 |
RGBA(Red, Green, Blue, Alpha) |
説明 |
指定した赤、緑、青、およびアルファ要素の色の値を返します。 |
使用例 |
次の関数ではラベルのフォント カラーをライト オレンジに設定できます。 RGBA(255, 127, 39, 1) |
Right
構文 |
Right(Text, NumChars) Right(ColumnExpression, NumericExpression) |
説明 |
指定した文字列の末尾から、指定した数の文字を返します。 |
使用例 |
Right("ABCDE", 4) は BCDE を返します。 |
Round
構文 |
Round(Number, DecimalPlaces) Round(Column, DecimalPlaces) |
説明 |
所定の数値を指定した小数部でまるめます。この関数は数値のテーブルに対して実行できます。 |
例 |
手動で入力したデータでこの関数を使用するには、以下のようにします。
コレクションでこの関数を使用するには、以下のようにします。
|
RoundDown
構文 |
RoundDown(Number, DecimalPlaces) RoundDown(Column, DecimalPlaces) |
説明 |
所定の数値を指定した小数部で切り捨てます。 |
使用例 |
RoundDown(23.54, 0) は 23 を返します。 |
RoundUp
構文 |
RoundUp(Number, DecimalPlaces) RoundUp(Column, DecimalPlaces) |
説明 |
所定の数値を指定した小数部で切り上げます。 |
使用例 |
RoundUp(23.44, 1) は 23.5 を返します。 |
SaveData
構文 |
SaveData(Collection, FileName) |
説明 |
指定したコレクションのデータを暗号化し、指定したファイルにそれを保存します。このファイルはアプリ独自の保護された領域にあります。アプリのローカル ストレージにアプリケーション データを保存したり、ローカル ストレージからアプリケーション データを読み出したりするには、この関数を LoadData 関数と共に使用します。 SaveData は非同期関数で、Filter や CountIf の述語など、述語の中では使用できません。 |
使用例 |
アプリを閉じてから再び開いた後など、そのデータをコレクションにまた読み込む方法については、このトピックの前のほうに記載されている LoadData 関数を参照してください。 別の例については、「」をご覧ください。 |
Second
構文 |
Second(DateTime) |
説明 |
指定された TimeValue の「秒」を、0 以上 59 以下の数字で返します。 |
使用例 |
EventTime という入力コントロールの Text プロパティを Second(TimeValue(EventTime!Text)) に設定した場合、このコントロールに「10:20:30 PM」と入力すると、ラベルに 30 と表示されます。 |
ShowColumns
構文 |
ShowColumns(CollectionName, "Column1", "Column2"...) |
説明 |
指定のデータ ソースから指定した列のみを含む一時テーブルを作成します。コレクションの列または、Excel や SharePoint リストなどからインポートしたデータを指定できます。 |
例 |
1.ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。 Collect(Products, {String:"Violin", Wind:"Trombone", Percussion:"Bongos"}, {String:"Cello", Wind:"Trumpet", Percussion:"Tambourine"}) 2.F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。 3.ユーザー設定ギャラリーを追加し、それに TableHolder という名前を付け、[項目] プロパティを以下の関数に設定します。 ShowColumns(Products, "String", "Wind") 4.2 つ目のボタンを追加し、その OnSelect プロパティを以下の関数に設定します。 Collect(Products2, TableHolder!AllItems) 5.F5 キーを押し、作成したボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。 6.Alt を押しながら F を押し、[アプリのデータ] をクリックし、次に [コレクション] をクリックします。 7.Products と Products2 という名前のコレクションがあり、Products には 3 つすべての列があり、Products2 には最初の 2 列だけが含まれていることを確認します。 |
Shuffle
構文 |
Shuffle(Collection) |
説明 |
所定のコレクションのコピーを、テーブルの行を無作為に並び替えて返します。 |
使用例 |
Deck という名前のコレクションにトランプの詳細を保管している場合、次の関数はそのコレクションをシャッフルします。 Shuffle(Deck) |
Sort
構文 |
Sort(Table, Expression[, SortOrder!Descending]) |
説明 |
所定のテーブルの行を並び替えた上で、コレクションのコピーを返します。並び替えは、サポートされているいずれかの式の種類 (数値とそのサブタイプ、文字列とそのサブタイプ、ブール値) を評価する、指定した式の結果に基づいてなされます。この関数では、テーブルや行などの集約値に対する並べ替えはサポートされていません。また、この関数はテーブルを降順で並べ替えることを示すオプションの引数も受け入れます。 |
使用例 |
Salary 列が含まれている Employees テーブルがある場合、次の関数は、給与の高い従業員を上位に、低い従業員を下位に並べて一覧表示します。 Sort(Employees, Salary, SortOrder!Descending) |
Sqrt
構文 |
Sqrt(Number) Sqrt(ColumnExpression1) |
説明 |
正の数の平方根を返します。この関数は数値のテーブルに対して実行できます。 |
例 |
手動で入力したデータでこの関数を使用するには、以下のようにします。
コレクションでこの関数を使用するには、以下のようにします。
|
StdevP
構文 |
StdevP(Table, Expression) StdevP(Expression1[,Expression2, ...]) |
説明 |
その引数の標準偏差を返します。 |
例 |
CostPerUnit 列と UnitsSold 列が含まれるだけでなく、各地域をそれぞれ別個の行にリストしている Sales テーブルがある場合、次の関数は地域ごとの売上の標準偏差を計算します。 StdevP(Sales, CostPerUnit * UnitsSold) 1 から 7 のスライダーに設定された値の標準偏差を計算するには: StdevP(Slider1!Value, Slider2!Value, Slider3!Value, Slider4!Value, Slider5!Value, Slider6!Value, Slider7!Value) |
Substitute
構文 |
Substitute(Text, OldText, NewText[,InstanceNum]) Substitute(TextColumn, OldTextColumn, NewTextColumn[, InstanceNumColumn]) |
説明 |
テキスト文字列の一部を別のテキスト文字列で置き換えます。オプションの 4 番目の引数を使用する場合は、何番目に一致したインスタンスを置換するかを、1 (1 は最初のインスタンスを意味します) から始まる数字で指定します。 |
使用例 |
次の関数は " & " を " and " で置き換えます。 Substitute(Text1!Text, " & ", " and ") |
Sum
構文 |
Sum(Table, Expression) Sum(Expression1[, Expression2, ...]) |
説明 |
指定した範囲について、引数の合計を返します。 |
例 |
CostPerUnit 列と UnitsSold 列が含まれている Sales という名前のテーブルがある場合、次の関数は売上の合計を計算します。 Sum(Sales, CostPerUnit * UnitsSold) スライダー 1、2、および 3 に設定した値の合計を計算するには: Sum(Slider1!Value, Slider2!Value, Slider3!Value) |
テーブル
構文 |
Table({Column1:Row1, Column2:Row1...}, {Column1:Row2, Column2:Row2...}) |
説明 |
指定したデータを格納する一時テーブルを作成します。すべての行のすべての列にデータを指定する必要はありません。 |
例 |
|
テキスト
構文 |
Text(Value, Format) |
説明 |
ある値を、書式設定したテキスト出力に変換します。 |
例 |
|
時間
構文 |
Time(Hour, Minute, Second) |
説明 |
指定した時間、分、秒を 10 進数に変換します。 |
使用例 |
ユーザーが BirthHour という名前の入力テキスト コントロールに 14、BirthMinute という名前の入力テキスト コントロールに 50、BirthSecond という名前の入力テキスト コントロールに 24 と入力した場合、この関数は 02:50:24 p を返します。 Text(Time(Value(BirthHour!Text), Value(BirthMinute!Text), Value(BirthSecond!Text)), "hh:mm:ss a/p") |
TimeValue
構文 |
TimeValue(TimeText) TimeValue(TimeText, "LanguageCode") |
説明 |
テキストとして格納されている時刻値を、2 つの時刻の比較などの算術演算または Boolean 演算を実行できる値に変換します。一貫性を保つため、すべての時刻は、現地時間のタイム ゾーンから協定世界時 (UTC) に変換されます。その結果、あるユーザーが太平洋時間帯で「1:50:24 PM」と指定し、別のユーザーが米国東部時間帯で「4:50:24 PM」と指定すると、どちらの値も「5:50:24 AM」と表示されることになります。 時刻値が適切に解釈されて形式設定されるように、言語コードを指定することもできます。 |
使用例 |
テキスト入力コントロールに FinishedAt と名付け、ラベルの Text プロパティを次のような関数に設定します。 If(TimeValue(FinishedAt!Text)<TimeValue("5:00:00.000 PM"), "You made it!", "Too late!")
|
Today
構文 |
Today() |
説明 |
現在の日付を、デバイスのロケール固有の形式で返します。 |
使用例 |
今日が 2014 年 10 月 11 日で、ラベルの[テキスト] プロパティを以下の関数に設定した場合:
|
Trim
構文 |
Trim(Text) Trim(ColumnExpression) |
説明 |
単語と単語の間の半角スペースを除くすべてのスペースを、テキスト文字列から削除します。 |
例 |
Slogan というテキスト入力コントロールに「We are the best!」と入力すると、Text プロパティが Trim(Slogan!Text) に設定されているラベルは、"We are the best!" を返します。 |
Update
構文 |
Update(Collection, Record1, Record2[, "All"]) |
説明 |
指定されたコレクションで、一致したレコードを指定したレコードに置き換え、結果のコレクションを返します。すべての一致を更新するには、オプションの引数 "All" を指定します。 重要 この関数は基になるコレクションを変更します。 |
使用例 |
|
UpdateContext
構文 |
UpdateContext({Name1: Expression1, Name2: Expression2, …}) |
説明 |
現在の画面のコンテキストを更新し、指定した式の評価の結果に、指定した変数をバインドします。画面上にコンテキストを設定する代替方式については、この記事の前のほうにある Navigate 関数を参照してください。 重要 この関数は基になる画面コンテキストを変更します。 |
使用例 |
UpdateContext({page: 5, displayItem: "Tablets"}) |
UpdateIf
構文 |
UpdateIf(Collection, Condition1, {Column1: Expression1, …}[, Condition2, {Column1: Expression2, …}…]) |
説明 |
指定した条件を満たす行について、該当する式の結果を使用することにより、指定した列を更新し、変更されたコレクションを返します。 重要 この関数は基になるコレクションを変更します。 |
使用例 |
ShoppingCart という名前のコレクションがあり、それに Price という名前のフィールドが含まれている場合、次の関数はそのコレクション内で価格が 200 を超えるすべての項目の NumItems を 0 に設定します。 UpdateIf(ShoppingCart, Price > 200, {NumItems: 0}) |
Upper
構文 |
Upper(Text) Upper(ColumnExpression) |
説明 |
|
例 |
手動で入力したデータでこの関数を使用するには、以下のようにします。
コレクション内のデータでこの関数を使用するには、以下のようにします。
|
Value
構文 |
Value(Text) |
説明 |
数値を表すテキスト文字列を数字に変換します。 |
使用例 |
Value("25") は 25 を返します。 |
VarP
構文 |
VarP(Table, Expression) VarP(Expression1[, Expression2, ...]) |
説明 |
その引数の分散を返します。 |
例 |
CostPerUnit 列と UnitsSold 列が含まれるだけでなく、各地域をそれぞれ別個の行にリストしている Sales テーブルがある場合、次の関数は地域ごとの売上の分散を計算します。 VarP(Sales, CostPerUnit * UnitsSold) 1 から 7 のスライダーに設定された値の標準偏差を計算するには: VarP(Slider1!Value, Slider2!Value, Slider3!Value, Slider4!Value, Slider5!Value, Slider6!Value, Slider7!Value) |
Year
構文 |
Year(DateTime) |
説明 |
指定された日付の「年」を、1900 以上 9999 以下の数字で返します。 |
使用例 |
Year(DateValue("03/17/1979")) は 1979 を返します。 |