torazaemon2016’s blog

手書き文字認識メモ開発

iPhoneのショートカット (その6) ObsidianのDailyページを開いて最下行へ

ObsidianのDailyページを開いて、かつ最下行へ飛ぶ

いろいろなページで探してみましたが、Obsidianのdailyページを最下行の状態で開く方法が見当たらなかったので、 ややトリッキーな方法ですが、今日のページを最下行の状態で表示する方法を実装しました。

方法は、JavaScriptで書かれたDataviewJSのスクリプトのmdページを開くと、それが今日のページを新しいTabで開いて、 最下行に飛んだのち、 そのスクリプト自身のmdページを閉じることで、結果として今日のページが最終行表示で残っているというものです。

Keyword: Obsidian, Dataview, DataviewJS, JavaScript, daily note, goto bottom, 最下行へ飛ぶ,

コミュニティプラグイン「Dataview」

まず、DataviewJSが動作するようにするため、コミュニティプラグイン「Dataview」を有効にして、 その中のオプション 「DataviewJS」もONになっているか、 確認してください。 特に、inline JavaScript queries がONになっていることも忘れずに。

コミュニティプラグイン「Dataview」

「DataviewJS」をON

ショートカット

「Open Bookmark」で、Bookmarkしているページ(ここでは Open-Today-and-goto-bottom.md)を開きます。

Open-Today-and-goto-bottom.md の内容

以下のような DataviewJS でのスクリプトです。

このページを開いたら、スクリプトが実行されるようになっているものです。

Obsidianのmdファイルにおいて、DataviewJS でスクリプトを書く方法は、バッククオート(@のshift)を3つで上下に囲まれたものです。

以下の右上にコピーボタンもありますので、それを押してコピーして、mdファイルに貼り付けてみてください。

```dataviewjs
//const path = "daily/2026-02-14.md"; // 開きたいノートのパス
//https://www.ey-office.com/blog_archive/2023/04/18/short-code-to-get-todays-date-in-yyyy-mm-dd-format-in-javascript/
// sv-SEロケールはYYYY-MM-DD形式の日付文字列を戻す
//new Date().toLocaleDateString('sv-SE')
const path = "daily/" + new Date().toLocaleDateString('sv-SE') + ".md"; // 開きたいノートのパス
const file = app.vault.getAbstractFileByPath(path);
if (file) {
        const leaf = app.workspace.getLeaf('tab');
        await leaf.openFile(file);

        setTimeout(() => {
            const editor = leaf.view.editor;
            editor.setCursor({ line: 9999, ch: 0 });    // 最下行(9999行)へ
        }, 200);
} else {
    dv.paragraph("ファイルが見つかりません: " + path);
}

//上のNewTabからOpen-Today-and-goto-bottom.md自体に戻る
app.commands.executeCommandById("workspace:previous-tab")
//自身(Open-Today-and-goto-bottom.md)を閉じる
app.commands.executeCommandById("workspace:close")
```

JavaScriptの内容

const path = "daily/" + new Date().toLocaleDateString('sv-SE') + ".md";
const file = app.vault.getAbstractFileByPath(path);

今日のファイル名を生成して(daily/YYYY-MM-DD.md)

const leaf = app.workspace.getLeaf('tab');
await leaf.openFile(file);

「新しいTabページ」でファイルを開き

const editor = leaf.view.editor;
editor.setCursor({ line: 9999, ch: 0 });    // 最下行(9999行)へ

ページの最下行(9999行)へ移動としている。

最後の2行は、

//上のNewTabからOpen-Today-and-goto-bottom.md自体に戻る
app.commands.executeCommandById("workspace:previous-tab")

「このOpen-Today-and-goto-bottom.md」のタブページから上記のように新しいTabページを開いて移動しているので、 その前のページ(Open-Today-and-goto-bottom.mdに戻る)

//自身(Open-Today-and-goto-bottom.md)を閉じる
app.commands.executeCommandById("workspace:close")

で、戻った自身(Open-Today-and-goto-bottom.md)を閉じることで、 結果として、今日のページの最下行が開かれている状態になっている。

おわりに

かなり強引な方法ですが、結果として、Obsidianの今日のdailyページを、最下行に行っている状態で開くことができました。

Windowsであれば、Ctrl+End のキー操作ですぐに最下行にいけましたが、 iPhoneでは面倒だったのが簡単になり、かつ、アクションボタンで一発にもなったので、 大変便利になりました。