LINE WORKS で 外部連携用のQRコード を一括生成（ほぼコピペ）



LINE WORKSは、ビジネスチャットで唯一、LINEや外部のLINE WORKSとつながることができる「外部トーク連携」という機能を提供しています。

LINEを使うユーザーと直接やりとりができるようになるため、営業の顧客接点や、協力会社とのやり取りなど、様々な場面で社外とのコミュニケーションに活用することができます。


<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/a0ce2f59-f30b-8a87-15eb-bc12e240d05a.png">

### 友だち追加QRコードとは

外部トーク連携をするには、LINE WORKSのQRコードを名刺やメールのフッターに掲載し、LINEユーザ側から「友だち追加」をしてもらう、というやり方がありますが、

**「複数名のQRコードを一括で作成したい」** という要望を多くいただいておりましたので、Excel VBAやGoogle Appsを使って、ほぼコピペだけで簡単に一括生成する方法をご案内します。

（動作保証やサポートはしていません。あくまで自己責任の範囲でご利用ください）

### 利用イメージ

指定したフォルダへ {ID名}.png というファイル名のQRコードを一括出力します
所要時間：約5～10分

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/428c54ef-55fd-8185-d468-623e0d6dfb30.png">

## Excelを使う場合

:::note info
Excel VBAの利用権限の制限があったり、Macユーザの方でVBAを利用できない方は、後述するGoogle Appsをお試しください。
:::

**1. フォルダの作成**
Cドライブ直下に「QRCode」という名前のフォルダを作ります
※他のフォルダを指定したい場合は適宜カスタマイズ可能
 
**2. Excelブックの準備**
Excelブックを開き、A列へ、QRコードを作成したいLINE WORKS IDを入力します

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/6900d302-75fd-0074-f703-1bedb6c625b6.png">


**3. VBAの作成**
Excelで、Alt + F11 キーを押すとVBAエディタが開きます。
VBAエディタのメニューバーで「挿入」を選択し、「標準モジュール」をクリックして新しいモジュールを追加します。

<img width="800" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/eda2b72b-5752-1984-4f48-4f4700d552dc.png">

**4. コードの入力**
以下のVBAコードを、さっきのモジュールにコピペします。

```VB
Sub GenerateAndSaveQRCodes()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を適宜変更

    Dim baseUrl As String
    baseUrl = "https://works.do/R/ti/p/{name}"

    Dim i As Integer
    i = 1

    While ws.Cells(i, 1).Value <> ""
        Dim name As String
        name = ws.Cells(i, 1).Value  ' A列に入力されたユーザIDの値を取得

        Dim url As String
        url = Replace(baseUrl, "{name}", name) ' URLを作成

        Dim qrCodeUrl As String
        qrCodeUrl = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" & url  ' QRServer APIにてQRコードへ変換

        Dim imagePath As String
        imagePath = "C:\QRCode\" & name & ".jpg" ' 保存先のパス、ファイル命名規則、拡張子は適宜変更可（デフォルトはCドライブ下のQRCodeフォルダ）

        DownloadQRCode qrCodeUrl, imagePath
        i = i + 1
    Wend
End Sub

Sub DownloadQRCode(url As String, savePath As String)
    Dim xmlHttp As Object
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "GET", url, False
    xmlHttp.send

    If xmlHttp.Status = 200 Then
        Dim stream As Object
        Set stream = CreateObject("ADODB.Stream")
        stream.Open
        stream.Type = 1 ' Binary
        stream.Write xmlHttp.responseBody
        stream.SaveToFile savePath, 2 ' 2 = overwrite
        stream.Close
    End If
End Sub
```

**5. マクロの実行許可**
Excelでマクロを実行するには、セキュリティ設定でマクロの実行を許可する必要があります。Excelの「ファイル」タブから「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」に進み、「マクロの設定」で「すべてのマクロを有効にする」（または「警告を表示して有効にする」）を選択します。



<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/be2540ab-1017-67d9-9179-8b1ff2144e69.png">


**6. マクロの実行**
VBAエディタに戻り、先ほど作成したコードモジュールを選択します。
メニューから「実行」> 「マクロの実行」> 「GenerateAndSaveQRCodes」を選択して実行します。
これでフォルダにQRコードが作成されます。

失敗する場合は、保存先のフォルダ「QRCode」がちゃんと作成されているか
保存先のパスが合っているかなど確認してください

## Google Sheetを使う場合

Googleアカウントを持っていれば誰でもつかえるGoogle Sheetを使うやり方です。
ただし、QRコードは直接ローカルには保存されず、
Google Drive上に作成される「QR COdes」というフォルダに保存されるので、そこからローカルへDLしてください。

**1. Google Sheetの作成**
Google Sheetで新しいシートを作成し、A列にQRコードを作成したいLINE WORKS IDを入力します


<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/06a47c23-5919-f155-f579-5c92c285e769.png">

**2. スクリプトの作成**
「拡張機能」メニューから「Google Apps Script」を開きます。


<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/f86f2922-59ad-ae46-597f-fbdfe14084d1.png">

以下のスクリプトをコピーして、

```js
function generateQRCodes() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var names = sheet.getRange('A:A').getValues(); // A列からデータを取得
  var baseUrl = 'https://works.do/R/ti/p/{name}';
  var folder = DriveApp.createFolder('QR Codes'); // QRコードを保存するフォルダを作成

  names.forEach(function(name) {
    if (name[0] !== '') {
      var url = baseUrl.replace('{name}', name[0]);
      var qrCodeUrl = 'https://chart.googleapis.com/chart?cht=qr&chl=' + encodeURIComponent(url) + '&chs=150x150';
      var response = UrlFetchApp.fetch(qrCodeUrl);
      var blob = response.getBlob();
      folder.createFile(blob).setName(name[0] + '.png'); // QRコードをpngとして保存
    }
  });
}

```

Apps Scriptの「コード.gs」に貼り付けて、
Ctrl + S で保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/4bd9ecbd-3ff4-0618-4dab-95818f06841a.png)


**4. スクリプトの実行**
上部メニューの「実行」をクリックするとスクリプトが実行されます
しばらくグルグルと処理が回ります
Googleの無料アカウントは確か最長5-6分ほどで処理がタイムアウトになるので、目安としては一度に処理できるのは50件程度かもしれません（未検証）

実行完了
と表示されたら、Google Driveの「QR Codes」というフォルダ内にQRコードが作成されていると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727469/9ed6f734-6f09-e7a9-1261-26219359db96.png)

注意点
* 初回実行時にGoogle Drive APIの利用権限の設定が必要になるかもしれません