AIは完璧なコードをくれた。でも、動かない。
前回までで、「LINEに画像を送る」→「Googleドライブに保存される」ところまでは完成しました。 あとは、この画像を 「Windows PCが勝手に検知して印刷する」 だけです。
「Googleドライブのフォルダを監視して、新しい画像が来たら印刷して、終わったら移動させるスクリプト書いて」 。AIにそうお願いすると、数秒でPowerShellのコードが返ってきました。
「なんだ、楽勝じゃん」 そう思った私が甘かったです。ここからが「Windowsの仕様」との泥沼の戦いの始まりでした。
完成コードはこちら
最初に、今回使う完成品のコードをお見せします。完成品とドヤ顔をしてお見せしますが、全部AIが書いたものです。これを動かすのが今日のゴールです。
前提条件:
PCに「Google Drive デスクトップ版」がインストールされていること(Gドライブ等で見られる状態)。
Googleドライブ内に「Rx_Inbox(受信)」と「Rx_Done(印刷済)」というフォルダがあること。
※ 当初はWindows付属のペイントを使って印刷していましたが(アイキャッチ画像はそのため)、このコードはドライバを直接叩くように変わっています。
# ▼設定エリア
# Googleドライブが「G」以外ならここを変えてください
$watchPath = "G:\マイドライブ\Rx_Inbox"
$movePath = "G:\マイドライブ\Rx_Done"
# 【重要】プリンターのIPアドレス(PCからpingが通るか確認)
$targetIP = "192.168.1.000"
# ▲設定エリア終了
# 文字化け対策
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(932)
Write-Host "処方箋 自動印刷システム(監視用PC版)を起動中..." -ForegroundColor Cyan
Write-Host "ターゲットIP: $targetIP"
Write-Host "PC起動後の待機中(30秒)..." -ForegroundColor Gray
# 起動直後のドライバ読み込み・Wi-Fi接続待ち
Start-Sleep -Seconds 30
Write-Host "監視を開始します: $watchPath"
while ($true) {
if (Test-Path $watchPath) {
$files = Get-ChildItem -Path $watchPath -Filter "*.jpg"
foreach ($file in $files) {
try {
# IPアドレスを含むプリンターを自動で探す
$printer = Get-WmiObject Win32_Printer | Where-Object { $_.PortName -like "*$targetIP*" } | Select-Object -First 1
if ($printer) {
Write-Host "検知: $($file.Name)" -ForegroundColor Yellow
Write-Host " └ プリンター名: $($printer.Name)" -ForegroundColor Cyan
# 印刷実行
$arg = "C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo `"$($file.FullName)`" `"$($printer.Name)`""
Start-Process -FilePath "rundll32.exe" -ArgumentList $arg -Wait
Start-Sleep -Seconds 6
# 移動
Move-Item -Path $file.FullName -Destination $movePath -Force
Write-Host " └ 完了: 移動しました" -ForegroundColor Green
} else {
Write-Host "エラー: 指定IP($targetIP)のプリンターが見つかりません。ドライバは入っていますか?" -ForegroundColor Red
}
}
catch {
Write-Host "エラー: $($_.Exception.Message)" -ForegroundColor Red
}
}
} else {
Write-Host "エラー: Googleドライブ(G:)が見つかりません" -ForegroundColor Red
}
Start-Sleep -Seconds 5
}
このコードをメモ帳に貼り付けて、保存して実行するだけ……のはずでした。
私がハマった「3つの落とし穴」、きっと苦労するポイントだと思いますので、ご紹介します。
罠1:画面が真っ赤に!「実行ポリシー」の壁
保存したファイルを右クリックして「PowerShellで実行」を押した瞬間、黒い画面に 真っ赤な文字で大量のエラー が表示され、一瞬で消えてしまいました。

「ウイルスか!?」と焦りましたが、違います。 Windowsはセキュリティのため、「自作のスクリプトは勝手に実行させない」 という設定がデフォルトになっているのです。
【解決策】 PowerShellを「管理者として実行」で立ち上げ、以下の一文を1度だけ入力する必要がありました。
Set-ExecutionPolicy RemoteSigned
これを知らないと、永遠に動きません。
罠2:日本語が文字化け?「UTF-8」の呪い

エラーが消えたと思ったら、今度は文字化けのエラー。 パスは合っているはずなのに……よく見ると、フォルダ名の日本語部分(「マイドライブ」など)が変な記号に文字化けしていました。
原因は 「文字コード」 です。 Windowsのメモ帳は、保存形式を意識しないと「UTF-8」で保存しますが、古いPowerShellの設定と食い違って文字化けすることがあるのです。
【解決策】 メモ帳で保存する際、「名前を付けて保存」 の画面下部にある「エンコード」を 「UTF-8 (BOM付き)」 ではなく、 「ANSI」 (Shift-JIS)に変えることで解決しました。ここ、地味ですがハマります。
罠3:朝起きたら「メモ帳」が開いていた
「よし、動いた!」 何回か自分でLINEを送って自動印刷が動くことを確認します。安心して、このファイルを「スタートアップ(PC起動時に自動実行するフォルダ)」に入れました。 次の日の朝、薬局のPCを立ち上げると……
画面には、黒い実行画面ではなく、「ただコードが書かれたメモ帳」がポツンと開いていました。
Windowsにとっては、「.ps1 ファイル? ああ、これはテキストファイルだね。中身を見せてあげるよ」という親切心だったのです。 いや、読んでほしいんじゃない、実行してほしいんだ!
【解決策】 スタートアップに入れるのは、ファイルそのものではなく、「ショートカット」です。 しかもただのショートカットではなく、リンク先を以下のように書き換える必要がありました。
powershell.exe -ExecutionPolicy Bypass -File "C:\保存場所\AutoPrint.ps1"
ここまでやって初めて、PC起動と同時に「黒い画面」が立ち上がり、監視が始まるようになりました。
以下、正しい設定手順(完全版)です。私の屍を越えて、お読みの皆さんは最短ルートで進んでください。
手順1:ファイルを作成する
メモ帳を開き、上記のコードを貼り付けます。
パスはご自分の環境に合わせて書き換えてください。
「名前を付けて保存」 を選び、ファイル名を「AutoPrint.ps1 」に(拡張子を.txtにしない!)。
ファイルの種類:「すべてのファイル」、エンコード: 「ANSI」 (またはShift-JIS) ※ここ重要!
デスクトップなどの消さない場所に保存します。
手順2:実行許可を与える(初回のみ)
スタートメニューを右クリック → 「PowerShell (管理者)」 または「ターミナル(管理者)」を開きます。
Set-ExecutionPolicy RemoteSigned
と入力してEnter。
「よろしいですか?」と聞かれたら Y を押してEnter。
手順3:テスト実行
作成した AutoPrint.ps1 を右クリックして 「PowerShell で実行」 をクリックします。 青い(または黒い)画面が出て、「監視フォルダ…」と表示されれば成功です! スマホからLINEで画像を送ってみてください。プリンターが動き出す感動の瞬間です。
手順4:自動起動の設定(ショートカットの作成)
AutoPrint.ps1 を右クリック → 「ショートカットの作成」。
できたショートカットを右クリック → 「プロパティ」。
「リンク先」の欄の先頭に powershell.exe -File を追記します。
例:
powershell.exe -File "C:\Users\User\Desktop\AutoPrint.ps1"
このショートカットを、スタートアップフォルダ(Winキー + R → shell:startup で開く)に入れます。
自動印刷システム設定をを終えて
こうして、私の薬局には 「LINEで処方箋を送ると、勝手に印刷されて、患者さんに自動返信するシステム」 が完成しました。
かかった費用は 0円。 必要なのは、少しの根気と、AIに質問する勇気、そして数々のエラーにめげない心です。
導入してから、業務フローは劇的に変わりました。 「あ、LINEきてる。印刷しなきゃ」という作業がゼロになり、プリンタの前に行けばもう紙が出ている。 この便利さを、ぜひ全国の薬局の皆さんにも味わってほしいと思います。
もし途中で詰まったら? 大丈夫、今はGeminiやChatGPTという最強の助手がついています。エラーメッセージをそのままコピペして相談すれば、きっと答えを教えてくれますよ。







新着記事