関数は[[Basesの紹介|Bases]]において、[[プロパティ]]のデータを[[ビュー#フィルター|フィルター]]や[[数式]]で操作するために使用されます。関数の使い方について詳しくは[[Bases構文|Bases構文]]リファレンスをご覧ください。 Bases関数はJavaScriptの動作に従います。完全なリファレンスドキュメントについては、[MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference)を参照してください。 [[関数#グローバル|グローバル]]関数を除き、ほとんどの関数は変更したい値の型に依存します: - [[関数#Any型|Any]] - [[関数#日付型|日付]] - [[関数#文字列型|文字列]] - [[関数#数値型|数値]] - [[関数#リスト型|リスト]] - [[関数#リンク型|リンク]] - [[関数#ファイル型|ファイル]] - [[関数#オブジェクト型|オブジェクト]] - [[関数#正規表現型|正規表現]] ## グローバル グローバル関数は型を指定せずに使用します。 ### `escapeHTML()` `escapeHTML(html: string): string` - 文字列内の特殊文字をエスケープし、HTMLに安全に含められるようにします。 ### `date()` `date(date: string): date` - `date(string): date` は指定された文字列を解析し、日付オブジェクトを返します。 - `date` 文字列は `YYYY-MM-DD HH:mm:ss` の形式である必要があります。 ### `duration()` `duration(value: string): duration` - 文字列を期間として解析します。`value` 文字列の形式については[[Bases構文#日付の算術演算|日付の算術演算セクション]]を参照してください。 - 日付の算術演算では明示的な解析は不要です(例:`now() + '1d'`)。ただし、期間に対する算術演算を行う場合は必要です(例:`now() + (duration('1d') * 2)`)。 - 期間とスカラーの算術演算を行う場合、期間は左側に置く必要があります。例えば `2 * duration('5h')` ではなく `duration('5h') * 2` とします。 ### `file()` `file(path: string | file | url): file` - 指定されたファイルまたはパスのファイルオブジェクトを返します。 - 例:`file(link("[[filename]]"))` または `file("path to file")`。 ### `html()` `html(html: string): html` - 文字列をHTMLとしてレンダリングされるコードスニペットに変換します。 ### `if()` `if(condition: any, trueResult: any, falseResult?: any): any` - `condition` は評価する式です。 - `trueResult` は `condition` が真の場合の出力です。 - `falseResult` は `condition` が偽の場合のオプションの出力です。省略された場合、デフォルトで `null` になります。 - `condition` が真、または真と評価される値の場合は `trueResult` を返し、それ以外の場合は `falseResult` を返します。 - 例:`if(isModified, "Modified", "Unmodified")` ### `image()` `image(path: string | file | url): image` - ビューで画像をレンダリングする画像オブジェクトを返します。 - 例:`image(image-property)` または `image("https://obsidian.md/images/obsidian-logo-gradient.svg")`。 ### `icon()` `icon(name: string): icon` - ビューでアイコンとしてレンダリングされる値を返します。アイコン名はサポートされているLucideアイコンと一致する必要があります。 - 例:`icon("arrow-right")`。 ### `link()` `link(path: string | file, display?: value): Link` - 文字列 `path` を解析し、指定されたパスへのリンクとしてレンダリングされるLinkオブジェクトを返します。 - オプションで `display` パラメータを指定して、リンクの表示テキストを設定できます。 ### `list()` `list(element: any): List` - 指定された要素がリストの場合、そのまま返します。 - それ以外の場合、指定された `element` をリストで囲み、単一要素のリストを作成します。 - 保管庫全体でプロパティに文字列とリストが混在している場合にこの関数を使用してください。 - 例:`list("value")` は `["value"]` を返します。 ### `max()` `max(value1: number, value2: number...): number` - 指定されたすべての数値の中で最大の値を返します。 ### `min()` `min(value1: number, value2: number...): number` - 指定されたすべての数値の中で最小の値を返します。 ### `now()` `now(): date` - 現在の瞬間を表す日付オブジェクトを返します。 ### `number()` `number(input: any): number` - 指定された値を数値として返すことを試みます。 - 日付オブジェクトはUnixエポックからのミリ秒として返します。 - ブーリアンは `1` または `0` として返します。 - 文字列は数値として解析し、有効な数値でない場合はエラーを返します。 - 例:`number("3.4")` は `3.4` を返します。 ### `today()` `today(): date` - 現在の日付を表す日付オブジェクトを返します。時刻部分は深夜0時に設定されます。 ### `random()` `random(): number` - 0から1の間のランダムな数値を返します。 - 数値の生成はビューが読み込まれるたびに更新されます。ビュー間を移動するとランダムな数値が変わります。 ## Any型 任意の値に使用できる関数です。文字列(例:`"hello"`)、数値(例:`42`)、リスト(例:`[1,2,3]`)、オブジェクトなどが含まれます。 ### `isTruthy()` `any.isTruthy(): boolean` - 値をブーリアンに変換して返します。 - 例:`1.isTruthy()` は `true` を返します。 ### `isType()` `any.isType(type: string): boolean` - 値が指定された型である場合にtrueを返します。 - 例:`"example".isType("string")` と `true.isType("boolean")` はどちらもtrueを返します。 ### `toString()` `any.toString(): string` - 任意の値の文字列表現を返します。 - 例:`123.toString()` は `"123"` を返します。 ## 日付型 `date("2025-05-27")` のような日付と時刻に使用できる関数です。日付の比較は[[Bases構文#日付の算術演算|日付の算術演算]]を使用して行えます。 ### フィールド 日付には以下のフィールドが利用できます: | フィールド | 型 | 説明 | | ------------------ | -------- | ---------------------------- | | `date.year` | `number` | 日付の年 | | `date.month` | `number` | 日付の月(1〜12) | | `date.day` | `number` | 日付の日 | | `date.hour` | `number` | 時(0〜23) | | `date.minute` | `number` | 分(0〜59) | | `date.second` | `number` | 秒(0〜59) | | `date.millisecond` | `number` | ミリ秒(0〜999) | ### `date()` `date.date(): date` - 時刻を除いた日付オブジェクトを返します。 - 例:`now().date().format("YYYY-MM-DD HH:mm:ss")` は "2025-12-31 00:00:00" のような文字列を返します。 ### `format()` `date.format(format: string): string` - `format` はフォーマット文字列です(例:`"YYYY-MM-DD"`)。 - Moment.jsのフォーマット文字列で指定された形式で日付をフォーマットして返します。 - 例:`date.format("YYYY-MM-DD")` は `"2025-05-27"` を返します。 ### `time()` `date.time(): string` - 時刻部分を文字列として返します。 - 例:`now().time()` は "23:59:59" のような文字列を返します。 ### `relative()` `date.relative(): string` - 日付と現在の日時との読みやすい比較を返します。 - 例:`file.mtime.relative()` は `3 days ago` のような値を返します。 ### `isEmpty()` `date.isEmpty(): boolean` - falseを返します。 ## 文字列型 `"hello"` のような文字の並びに使用できる関数です。 ### フィールド | フィールド | 型 | 説明 | | --------------- | -------- | -------------------------------------- | | `string.length` | `number` | 文字列の文字数 | ### `contains()` `string.contains(value: string): boolean` - `value` は検索する部分文字列です。 - 文字列が `value` を含む場合にtrueを返します。 - 例:`"hello".contains("ell")` は `true` を返します。 ### `containsAll()` `string.containsAll(...values: string): boolean` - `values` は1つ以上の検索する部分文字列です。 - 文字列がすべての `values` を含む場合にtrueを返します。 - 例:`"hello".containsAll("h", "e")` は `true` を返します。 ### `containsAny()` `string.containsAny(...values: string): boolean` - `values` は1つ以上の検索する部分文字列です。 - 文字列が `values` のうち少なくとも1つを含む場合にtrueを返します。 - 例:`"hello".containsAny("x", "y", "e")` は `true` を返します。 ### `endsWith()` `string.endsWith(query: string): boolean` - `query` は末尾を確認する文字列です。 - この文字列が `query` で終わる場合にtrueを返します。 - 例:`"hello".endsWith("lo")` は `true` を返します。 ### `isEmpty()` `string.isEmpty(): boolean` - 文字列に文字がない場合、または存在しない場合にtrueを返します。 - 例:`"Hello world".isEmpty()` は `false` を返します。 - 例:`"".isEmpty()` は `true` を返します。 ### `lower()` `string.lower(): string` - 文字列を小文字に変換して返します。 ### `replace()` `string.replace(pattern: string | Regexp, replacement: string): string` - `pattern` は対象文字列内で検索する値です。 - `replacement` は見つかったパターンを置き換える値です。`pattern` が正規表現の場合、`replacement` 内で `$1`、`$2` などを使用してキャプチャグループを参照できます。 - `pattern` が文字列の場合、パターンのすべての出現箇所が置換されます。 - `pattern` が正規表現の場合、`g` フラグによって最初の出現箇所のみを置換するか、すべての出現箇所を置換するかが決まります。 - 例:`"a:b:c:d".replace(/:/, "-")` は `"a-b:c:d"` を返しますが、`"a:b:c:d".replace(/:/g, "-")` は `"a-b-c-d"` を返します。 - キャプチャグループの例:`"John Smith".replace(/(\w+) (\w+)/, "$2, $1")` は `"Smith, John"` を返します。 ### `repeat()` `string.repeat(count: number): string` - `count` は文字列を繰り返す回数です。 - 例:`"123".repeat(2)` は `"123123"` を返します。 ### `reverse()` `string.reverse(): string` - 文字列を反転します。 - 例:`"hello".reverse()` は `"olleh"` を返します。 ### `slice()` `string.slice(start: number, end?: number): string` - `start` は開始インデックス(含む)です。 - `end` はオプションの終了インデックス(含まない)です。 - `start`(含む)から `end`(含まない)までの部分文字列を返します。 - 例:`"hello".slice(1, 4)` は `"ell"` を返します。 - `end` が省略された場合、文字列の末尾までスライスします。 ### `split()` `string.split(separator: string | Regexp, n?: number): list` - `separator` は文字列を分割する区切り文字です。 - `n` はオプションの数値です。指定された場合、結果は最初の `n` 個の要素になります。 - 部分文字列のリストを返します。 - 例:`"a,b,c,d".split(",", 3)` または `"a,b,c,d".split(/,/, 3)` は `["a", "b", "c"]` を返します。 ### `startsWith()` `string.startsWith(query: string): boolean` - `query` は先頭を確認する文字列です。 - この文字列が `query` で始まる場合にtrueを返します。 - 例:`"hello".startsWith("he")` は `true` を返します。 ### `title()` `string.title(): string` - 文字列をタイトルケースに変換します(各単語の先頭文字を大文字にします)。 - 例:`"hello world".title()` は `"Hello World"` を返します。 ### `trim()` `string.trim(): string` - 文字列の両端から空白を除去します。 - 例:`" hi ".trim()` は `"hi"` を返します。 ## 数値型 `42`、`3.14` のような数値に使用できる関数です。 ### `abs()` `number.abs(): number` - 数値の絶対値を返します。 - 例:`(-5).abs()` は `5` を返します。 ### `ceil()` `number.ceil(): number` - 数値を最も近い整数に切り上げます。 - 例:`(2.1).ceil()` は `3` を返します。 ### `floor()` `number.floor(): number` - 数値を最も近い整数に切り捨てます。 - 例:`(2.9).floor()` は `2` を返します。 ### `isEmpty()` `number.isEmpty(): boolean` - 数値が存在しない場合にtrueを返します。 - 例:`5.isEmpty()` は `false` を返します。 ### `round()` `number.round(digits: number): number` - 数値を最も近い整数に四捨五入します。 - オプションで `digits` パラメータを指定すると、その桁数の小数点以下に四捨五入します。 - 例:`(2.5).round()` は `3` を返し、`(2.3333).round(2)` は `2.33` を返します。 ### `toFixed()` `number.toFixed(precision: number): string` - `precision` は小数点以下の桁数です。 - 固定小数点表記の数値を文字列で返します。 - 例:`(3.14159).toFixed(2)` は `"3.14"` を返します。 ## リスト型 `[1, 2, 3]` のような順序付き要素のリストに使用できる関数です。 ### フィールド | フィールド | 型 | 説明 | | ------------- | -------- | ---------------------------------- | | `list.length` | `number` | リスト内の要素数 | ### `contains()` `list.contains(value: any): boolean` - `value` は検索する要素です。 - リストが `value` を含む場合にtrueを返します。 - 例:`[1,2,3].contains(2)` は `true` を返します。 ### `containsAll()` `list.containsAll(...values: any): boolean` - `values` は1つ以上の検索する要素です。 - リストがすべての `values` を含む場合にtrueを返します。 - 例:`[1,2,3].containsAll(2,3)` は `true` を返します。 ### `containsAny()` `list.containsAny(...values: any): boolean` - `values` は1つ以上の検索する要素です。 - リストが `values` のうち少なくとも1つを含む場合にtrueを返します。 - 例:`[1,2,3].containsAny(3,4)` は `true` を返します。 ### `filter()` `list.filter(value: Boolean): list` - リストをフィルタリングし、式がtrueの要素のみを保持します。 - `value` はリスト内のアイテムの値です。 - `index` は現在の値のインデックスです。 - 例:`[1,2,3,4].filter(value > 2)` は `[3,4]` を返します。 ### `flat()` `list.flat(): list` - ネストされたリストを単一のリストにフラット化します。 - 例:`[1,[2,3]].flat()` は `[1,2,3]` を返します。 ### `isEmpty()` `list.isEmpty(): boolean` - リストに要素がない場合にtrueを返します。 - 例:`[1,2,3].isEmpty()` は `false` を返します。 ### `join()` `list.join(separator: string): string` - `separator` は要素間に挿入する文字列です。 - すべてのリスト要素を単一の文字列に結合します。 - 例:`[1,2,3].join(",")` は `"1,2,3"` を返します。 ### `map()` `list.map(value: Any): list` - 式を使用してリストの各要素を変換します。 - `value` はリスト内のアイテムの値です。 - `index` は現在の値のインデックスです。 - 例:`[1,2,3,4].map(value + 1)` は `[2,3,4,5]` を返します。 ### `reduce()` `list.reduce(expression: Any, acc: Any): Any` - 各要素に対して式を実行することで、リストを単一の値に縮約します。式は `acc` の次の値を返す必要があります。現在の要素には `value`、その位置には `index`、ここまでの累積結果には `acc` を使用します。 - `expression` はリスト内のすべての要素に対して評価されます。 - `value` はリスト内の現在のアイテムの値です。 - `index` は現在のアイテムのインデックスです。 - `acc` はここまでの累積値です。 - 例(合計):`[1,2,3].reduce(acc + value, 0)` は `6` を返します。 - 例(最大値):`values.filter(value.isType("number")).reduce(if(acc == null || value > acc, value, acc), null)` は最大の数値を返すか、数値がない場合は `null` を返します。 ### `reverse()` `list.reverse(): list` - リストをその場で反転します。 - 例:`[1,2,3].reverse()` は `[3,2,1]` を返します。 ### `slice()` `list.slice(start: number, end?: number): list` - `start` は開始インデックス(含む)です。 - `end` はオプションの終了インデックス(含まない)です。 - `start`(含む)から `end`(含まない)までのリストの一部の浅いコピーを返します。 - 例:`[1,2,3,4].slice(1,3)` は `[2,3]` を返します。 - `end` が省略された場合、リストの末尾までスライスします。 ### `sort()` `list.sort(): list` - リスト要素を小さい順に並べ替えます。 - 例:`[3, 1, 2].sort()` は `[1, 2, 3]` を返します。 - 例:`["c", "a", "b"].sort()` は `["a", "b", "c"]` を返します。 ### `unique()` `list.unique(): list` - 重複する要素を削除します。 - 例:`[1,2,2,3].unique()` は `[1,2,3]` を返します。 ## リンク型 リンクに使用できる関数です。リンクはファイル(`file.asLink()`)またはパス(`link("path")`)から作成できます。 ### `asFile()` `link.asFile(): file` - リンクが有効なローカルファイルを参照している場合、ファイルオブジェクトを返します。 - 例:`link("[[filename]]").asFile()`。 ### `linksTo()` `link.linksTo(file): boolean` - `link` で表されるファイルが `file` へのリンクを持っている場合に `true` を返します。 ## ファイル型 保管庫内のファイルに使用できる関数です。 ### フィールド ファイルには以下のフィールドが利用できます: | フィールド | 型 | 説明 | | ----------------- | -------- | ------------------------------------------------------- | | `file.name` | `string` | このファイルの名前。 | | `file.basename` | `string` | 拡張子を除いたこのファイルの名前。 | | `file.path` | `string` | 保管庫ルートからの相対パス。 | | `file.folder` | `string` | 親フォルダへのフルパス。 | | `file.ext` | `string` | このファイルの拡張子。 | | `file.size` | `number` | このファイルのサイズ(バイト単位)。 | | `file.properties` | `object` | このファイルのノートプロパティ。 | | `file.tags` | `list` | このファイルのタグ。インラインタグを含みます。 | | `file.links` | `list` | このファイル内の内部リンク。 | | `file.ctime` | `date` | このファイルが作成された日時のタイムスタンプ。 | | `file.mtime` | `date` | このファイルが最後に変更された日時のタイムスタンプ。 | ### `asLink()` `file.asLink(display?: string): Link` - `display` はリンクのオプションの表示テキストです。 - 機能するリンクとしてレンダリングされるLinkオブジェクトを返します。 - 例:`file.asLink()` ### `hasLink()` `file.hasLink(otherFile: file | string): boolean` - `otherFile` は確認する別のファイルオブジェクトまたは文字列パスです。 - `file` が `otherFile` にリンクしている場合にtrueを返します。 - 例:`file.hasLink(otherFile)` は `file` から `otherFile` へのリンクがある場合に `true` を返します。 ### `hasProperty()` `file.hasProperty(name: string): boolean` - ファイルに指定されたプロパティがある場合に `true` を返します。 ### `hasTag()` `file.hasTag(...values: string): boolean` - `values` は1つ以上のタグ名です。 - ファイルが `values` のいずれかのタグを持っている場合にtrueを返します。 - 例:`file.hasTag("tag1", "tag2")` はファイルがタグ `#tag1` または `#tag2` を持っている場合に `true` を返します。`#tag1/a` や `#tag2/b` のような[[タグ#ネストされたタグ|ネストされたタグ]]も含まれます。 ### `inFolder()` `file.inFolder(folder: string): boolean` - `folder` は確認するフォルダ名です。 - ファイルが指定されたフォルダまたはそのサブフォルダ内にある場合にtrueを返します。 - 例:`file.inFolder("notes")` は `true` を返します。 ## オブジェクト型 `{"a": 1, "b": 2}` のようなキーと値のペアのコレクションに使用できる関数です。 ### `isEmpty()` `object.isEmpty(): boolean` - オブジェクトに固有のプロパティがない場合にtrueを返します。 - 例:`{}.isEmpty()` は `true` を返します。 ### `keys()` `object.keys(): list` - オブジェクトのキーを含むリストを返します。 ### `values()` `object.values(): list` - オブジェクトの値を含むリストを返します。 ## 正規表現型 正規表現パターンに使用できる関数です。例:`/abc/`。 ### `matches()` `regexp.matches(value: string): boolean` - `value` はテストする文字列です。 - 正規表現が `value` にマッチする場合にtrueを返します。 - 例:`/abc/.matches("abcde")` は `true` を返します。