PC操作 / AI・開発者向け

検索語を引数で受け取る

検索語入力欄に入れた文字を、Excelマクロ、PCで使うコード、アプリの起動時の引数へ、1つの値として渡せます。 このページは、自分でコードを書く人と、コードを書くAIの両方に向けた仕様です。

対応バージョン: PC版 LinkJumkey 1.8.16 以降。スマホのPadから押す場合、スマホアプリの更新は不要です。

3つの渡し先

PC操作の編集画面で、操作ごとに次の設定をします。設定をオンにしたボタンだけに検索語を渡し、ほかのボタンの動きは変わりません。

操作設定する場所受け取り方
Excelマクロ「検索語入力欄の内容をマクロの引数で渡す」をオンにするマクロの第1引数
PCでコードを使う「検索語入力欄の内容をコードに渡す」をオンにするコードの種類ごとに決まった名前で受け取る
ファイルを開く / アプリを起動「起動時の引数」に1行に1つ書く{検索語} の部分が置き換わる

渡される値のルール

  • 押した時点の検索語入力欄の内容を使います。スマホのPadから押した場合は、Padの入力欄の内容です。
  • 前後の空白と改行は取り除きます。途中の改行は残したまま、1つの値として渡します。1行ずつ別に実行することはありません。
  • 入力欄が空なら、空の文字列を渡します。入力付きURLと違い、クリップボードは使いません。
  • 8192文字を超える場合と、NUL文字を含む場合は、実行せずにエラーを表示します。
  • URL用の変換はしません。入力したとおりの文字で渡します。

Excelマクロ

マクロは、文字列の引数を1つ受け取る形にします。引数の無いマクロでこの設定をオンにすると、マクロを実行できずにエラーになります。

Sub SearchWord(word As String)
    If word = "" Then Exit Sub
    Dim ws As Worksheet, hit As Range
    For Each ws In ActiveWorkbook.Worksheets
        Set hit = ws.Cells.Find(What:=word, LookAt:=xlPart, MatchCase:=False)
        If Not hit Is Nothing Then
            ws.Activate
            hit.Select
            Exit Sub
        End If
    Next ws
    MsgBox "Not found: " & word
End Sub
  • 「Excelファイル」に指定したブックを開いてから、マクロを実行します。別のブックを検索するときは、マクロの中で Workbooks.Open を使って開きます。
  • 「実行前のA1」に値がある場合は、A1への入力を先に行ってから、マクロを実行します。
  • マクロ名は、Excelの「マクロ」画面に表示される名前(例: SearchWord または Module1.SearchWord)を入力します。

PCで使うコード

完成例: 検索語 → 架空SQLite顧客DB → CSV・HTML → 任意で結果URLを保存。短いコード例から業務ツールへ進む場合は、必要環境と試験手順も確認できます。

コードの種類ごとに、次の名前で検索語を受け取ります。検索語はコードの本文に書き込まれず、引数や環境変数として別に渡ります。

種類受け取り方補足
PowerShell(Windows)$env:LINKJUMKEY_INPUT$args には入りません
コマンドプロンプト(Windows)!LINKJUMKEY_INPUT!%LINKJUMKEY_INPUT% は使いません
AppleScript(Mac)item 1 of argvon run argv の中で受け取ります。system attribute は日本語が崩れるため使いません
シェルコマンド(Mac)"$1" または "$LINKJUMKEY_INPUT"必ずダブルクォートで囲みます

PowerShellの例

外部の.ps1/.psm1に日本語を書く場合は、PowerShell 5.1で読めるUTF-8 BOM付きで保存します。HTTPへJSONを送る時はUTF-8バイト列とcharset=utf-8を明示します。APIの完全な例を参照してください。

ドキュメントフォルダから、名前に検索語を含む最初のファイルを開きます。

[Console]::OutputEncoding = [Text.Encoding]::UTF8
$term = $env:LINKJUMKEY_INPUT
if ([string]::IsNullOrEmpty($term)) { Write-Output "Search term is empty"; exit }
$hit = Get-ChildItem -Path "$env:USERPROFILE\Documents" -Recurse -File -Filter "*$term*" -ErrorAction SilentlyContinue | Select-Object -First 1
if ($hit) { Invoke-Item -LiteralPath $hit.FullName } else { Write-Output "Not found: $term" }

コマンドプロンプトの例

ドキュメントフォルダから、名前に検索語を含むファイルの一覧を表示します。

chcp 65001 >nul
dir /s /b "%USERPROFILE%\Documents\*!LINKJUMKEY_INPUT!*"
遅延展開 この設定をオンにすると、コマンドプロンプトの遅延展開が有効になります。スクリプト内の ! は変数の区切りとして扱われます。%LINKJUMKEY_INPUT% は行を読む前に展開されるため、検索語に & や | があると、その後ろが命令として動きます。

AppleScriptの例

書類フォルダから、名前に検索語を含む最初のファイルを開きます。

on run argv
  set term to item 1 of argv
  if term is "" then return "Search term is empty"
  set found to do shell script "mdfind -onlyin ~/Documents -name " & quoted form of term & " | head -n 1"
  if found is "" then return "Not found: " & term
  do shell script "open " & quoted form of found
  return found
end run

シェルコマンドの例

term="$1"
if [ -z "$term" ]; then echo "Search term is empty"; exit 0; fi
file=$(mdfind -onlyin "$HOME/Documents" -name "$term" | head -n 1)
if [ -n "$file" ]; then open "$file"; else echo "Not found: $term"; fi
  • 編集画面の「PCで試す」は、その時点の検索語入力欄の内容で実行し、出力を表示します。
  • 結果画面で日本語が崩れる場合は、コマンドプロンプトでは先頭で chcp 65001 を実行します。PowerShellは1.8.17以降そのまま表示されます(1.8.16以前は先頭で [Console]::OutputEncoding をUTF-8にします)。
  • PowerShellでは、複数行にまたがる if / else、ヒアドキュメント、行末の | で続くパイプラインも書けます(1.8.17以降)。
  • 実行は30秒で打ち切ります。
Windowsでコードに日本語を書く場合 PC版 1.8.17 以降は、PowerShellとコマンドプロンプトのコードに日本語をそのまま書けます。1.8.16 以前では文字が崩れるため、日本語は検索語として渡すか、PowerShellでは [regex]::Unescape('\u65e5\u672c\u8a9e') のように \u 表記で書いてください。Macはどの版でもそのまま書けます。

起動時の引数

  • 1行に1つの引数を書きます。前後の空白は取り除き、空の行は無視します。最大20行、1行1000文字までです。
  • {検索語} の部分を検索語に置き換えます。1行の中に何回書いても構いません。
  • 「ファイルを開く」では、開くファイルを最後の引数として渡します。
  • 空白や引用符を含む引数には、Windowsの決まりに沿って自動で引用符を付けます。自分で引用符を書く必要はありません。
  • 使うときは、開くアプリを選びます。既定のアプリには引数を渡せません。
  • Macでは、アプリがすでに起動していると、起動時の引数は渡りません。

例: PDFを開いて検索する(Windows版 Adobe Acrobat)

操作: ファイルを開く
アプリ: Adobe Acrobat
ファイル: C:\Users\yourname\Documents\請求書一覧.pdf
起動時の引数:
/A
search={検索語}

Adobeの説明では、/A に続けて search= を渡すと、検索した状態でPDFを開きます。アプリの対応はバージョンによって変わるため、最初に「PCで試す」で確認してください。

例: ファイル検索ソフトで検索する(Windows版 Everything)

操作: アプリを起動
アプリ: Everything
起動時の引数:
-search
{検索語}
コマンドを実行するアプリには渡せません cmd.exe、PowerShell、wscript などのコマンドを実行するアプリには、起動時の引数で検索語を渡せません。バッチファイル(.bat / .cmd)には、起動時の引数そのものを渡せません。コードで処理したいときは「PCでコードを使う」を使います。

AIにコードを書かせるとき

ChatGPT、Claude、Geminiなどに次を貼り、やりたいことを書き足してください。

LinkJumkey の「PCでコードを使う」で動くコードを書いてください。
OS: Windows 11(Macなら macOS と書き換え)
コードの種類: PowerShell(Macなら AppleScript またはシェル)

LinkJumkey の検索語入力欄の文字は、次の方法で受け取ってください。
- PowerShell: $env:LINKJUMKEY_INPUT
- コマンドプロンプト: !LINKJUMKEY_INPUT!(%LINKJUMKEY_INPUT% は使わない)
- AppleScript: on run argv の item 1 of argv
- シェル: "$1"(必ずダブルクォートで囲む)
- Excelマクロ: Sub 名前(word As String) の第1引数
検索語は前後の空白を除いた1つの文字列で、空のこともあります。
検索語をコマンドの文字列に組み込んで実行しないでください
(Invoke-Expression、eval、cmd /c、do shell script への直接連結など)。
仕様: https://linkjumkey.matsumotojoho.com/guide/linkjumkey-input-arguments.txt

やりたいこと: ここに書く

AIが作ったコードは「PCでコードを使う」に貼り付け、「検索語入力欄の内容をコードに渡す」をオンにして保存します。保存の前に「PCで試す」で動きを確認してください。

AIツールが直接読むための仕様 このページの決まりを1つのテキストにまとめています: linkjumkey-input-arguments.txt

安全な書き方

検索語は、PCの前の人だけでなく、ペアリングしたスマホのPadからも届きます。コードの中では検索語をデータとして扱い、命令の一部にしないでください。

  • PowerShell: Invoke-Expression や呼び出し演算子 & に検索語を組み込まず、コマンドの引数の値として渡します。
  • コマンドプロンプト: %LINKJUMKEY_INPUT% を使わず、call や for /f の中で検索語を実行しません。
  • AppleScript: do shell script に渡すときは quoted form of を使います。
  • シェル: "$1" を必ずダブルクォートで囲み、eval や sh -c に渡しません。
  • Excelマクロ: Application.Run や Shell に検索語を組み込みません。

LinkJumkeyは、検索語をコードや起動コマンドの本文に書き込まず、引数と環境変数としてだけ渡します。この設定を使うボタンは、外部の実行リンクからは動きません。設定を変えたボタンは、そのPCで保存して確認するまで実行できません。

JSONで指定する(AI取り込み・MCP・+Auto)

項目使える手順意味
"passInput": truerunMacro(+Autoでは runScript も)検索語をマクロの第1引数、またはコードに渡す
"launchArgs": ["…"]openApp / openFile起動時の引数。1要素が1つの引数で、{検索語} を置き換える

PC操作ボタン1つ分の例です。

{
  "title": "請求書を検索",
  "steps": [
    { "kind": "runMacro", "file": "C:\\Users\\yourname\\Documents\\検索.xlsm", "macro": "Module1.SearchWord", "passInput": true },
    { "kind": "openFile", "app": "Adobe Acrobat", "file": "C:\\Users\\yourname\\Documents\\請求書一覧.pdf", "launchArgs": ["/A", "search={検索語}"] }
  ]
}
  • どの経路でも、保存の前にPC側の確認画面で内容を確認します。
  • コードの本文(runScript)は、AI取り込みとMCPからは作れません。+Autoで下書きを作るか、自分で貼り付けます。
  • 共有リンクでは、passInput は引き継ぎます。launchArgs は個人のパスを含むことがあるため共有しません。
  • Auto Plan JSON Schema(+Autoの形式はこちらを正とします)

うまく動かないとき

症状確認すること
Excelマクロの実行でエラーになるマクロが引数を1つ受け取る形(例: Sub SearchWord(word As String))になっているか
検索語が空で届く押す前に検索語入力欄へ入力したか。クリップボードは使いません
実行リンクから押すと動かないこの設定を使うボタンは、LinkJumkeyの画面かPadから押します
Macで起動時の引数が効かないアプリを終了してから押します
コマンドを実行するアプリには渡せないと表示される「PCでコードを使う」に切り替えます
Windowsでコードの中に書いた日本語が崩れるPC版を1.8.17以降に更新します。更新できない場合は、日本語を検索語として渡すか、PowerShellでは \u 表記で書きます
PowerShellで最後の if / else などが実行されないPC版を1.8.17以降に更新します
結果画面の日本語が崩れるコマンドプロンプトは chcp 65001 を使います。PowerShellは1.8.17以降で直ります