読者です 読者をやめる 読者になる 読者になる

Googleドライブにある画像の直リンクを生成する

Googleドライブに保存した画像から、
「共有可能なリンクを取得」でURLが得られるのだが
どうもGoogleの画像ビューア経由で表示されてしまい、
HTMLのIMGタグで指定することが出来なかった。

少し調べてみたところURLを加工することで直リンクもイケるらしい。

Google Driveに入れた画像を直接表示するパスを取得する。 - 亀岡的プログラマ日記

1枚2枚なら解説のとおり手作業でも問題無いんだが、
それ以上数をこなしてくとなると結構な手間になるのは目に見えているので、
加工を行うVBSを作ってみた。

VBSでクリップボードのテキスト取得はここら辺を参考にした。

VBScript でクリップボードのデータを扱う


●操作手順

1.Googleドライブにある画像を右クリック
2.「共有可能なリンクを取得」から表示されるリンクを選択してCtrl+Cでコピー
3.VBSを実行して直リンクを表示
4.表示された直リンクをコピー等して使用


GoogleDriveCreatePermalink.vbs

Option Explicit

Const TITLE = "Googleドライブ内画像 パーマリンク生成"
Const VERSION = "Ver1.00"
Const RELEASE = #2017/04/17#
Const AUTHOR = "DumBo"

Const SEARCH_TEXT = "https://drive.google.com/open?id="
Const REPLACE_TEXT = "https://drive.google.com/uc?export=view&id="

Dim clipText
Dim putText

'クリップボードのテキストデータ確認
clipText = GetClipboardText()

'クリップボードが空なら終了する
If IsNull(clipText) Then
    WScript.Echo "貼り付けるデータがありません。" & vbCrLf & _
        "とりあえず、何かコピーしてください。。。"
    WScript.Quit
    
'クリップボードに共有リンクが含まれていなければ終了する
ElseIf InStr(clipText, SEARCH_TEXT) <= 0 Then
    WScript.Echo "貼り付けるデータが正しくありません。" & vbCrLf & _
        "共有可能なリンクを取得からコピーしてください。。。"
    WScript.Quit
    
End If

'Googleドライブ内画像の共有可能なリンクからパーマリンクを生成する
putText = Replace(clipText, SEARCH_TEXT, REPLACE_TEXT)

Call InputBox("共有可能なリンクからパーマリンクを生成しました。" & vbCrLf & _
    "テキストボックスからコピーして使用してください。", _
    TITLE & " " & VERSION, putText)

WScript.Quit


'サブルーチン

'クリップボードにあるテキストデータを取得する。なければNullを返す。
Function GetClipboardText()
    Dim objHTML
    Set objHTML = CreateObject("htmlfile")
    GetClipboardText = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
    Set objHTML = Nothing
End Function