Apps ScriptでGoogleフォーム情報漏洩リスクを確認する方法

Googleフォームの情報漏洩リスクを確認

最近Googleフォームによる個人情報漏洩のニュースをよく見かけます。

このようなGoogleフォームによる個人情報漏洩のリスクを減らすために、Apps ScriptでGoogleフォームの一覧を表示してリスクを確認できる、Googleスプレッドシートを作成しました。

Apps ScriptでGoogleフォーム情報漏洩リスクを確認する方法

作り方はまず、Googleスプレッドシートを開いて、「拡張機能 → Apps Script」でApps Scriptのエディタを表示します。

Apps Scriptのエディタが表示されたら、以下のコードを貼り付けて保存します。

Apps Script
function checkGoogleForms() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  const sheet = spreadsheet.getActiveSheet()
  sheet.clear()
  sheet.appendRow(['ファイル名', '回答リンク', '作成日', '自分以外に編集可能なユーザー', '一般的なアクセス設定'])
  const headerRange = sheet.getRange('A1:E1')
  headerRange.setBackground('#d9eaf7')
  const files = DriveApp.getFiles()

  while (files.hasNext()) {
    const file = files.next()

    if (file.getMimeType() === 'application/vnd.google-apps.form') {
      const editors = file.getEditors()
      const users = []

      for (let i = 0; i < editors.length; i++) {
        users.push(editors[i].getEmail())
      }

      const usersString = users.join(', ')
      const permissionType = Drive.Permissions.list(file.getId()).permissions[0].type
      const row = [file.getName(), file.getId(), file.getDateCreated(), usersString, permissionType]
      const rowIndex = sheet.getLastRow() + 1
      sheet.appendRow(row)
      const range2 = sheet.getRange(rowIndex, 2)
      const url = 'https://docs.google.com/forms/d/' + file.getId() + '/edit#responses';
      const link = `=HYPERLINK("${url}", "${url}")`
      range2.setFormula(link)

      if (usersString) {
        const range4 = sheet.getRange(rowIndex, 4)
        range4.setBackground('#f4cccc')
      } else if (permissionType === 'anyone') {
        const range5 = sheet.getRange(rowIndex, 5)
        range5.setBackground('#f4cccc')
      }
    }
  }
}

Drive APIを使用しているので、サービスから「Drive API」の追加も必要です。

Apps Script サービスを追加 Drive API

あとは実行するだけで、GoogleスプレッドシートにGoogleドライブ内に保存されているGoogleフォームの一覧が「ファイル名、回答リンク、作成日、自分以外に編集可能なユーザー、一般的なアクセス設定」の見出しと一緒に表示されます。

Apps ScriptでGoogleフォーム情報漏洩リスクを確認する方法

もしシークレットウィンドウで回答リンクをクリックして、回答のページが表示されてしまう場合は、第三者に回答を見られてしまう(個人情報が漏洩してしまう)Googleフォームです。

Googleフォーム 回答ページ

「結果の概要を表示する」を有効にしたり、アクセス設定が「リンクを知っている全員」になってたりすると、回答が他の人にも見られてしまう可能性があります。

以下のリンク先のGoogleフォームのようにアクセス設定が適切であれば、第三者に回答が見られてしまうことはありません。(入力フォームが表示されます)

https://docs.google.com/forms/d/1iaCbs4QexDZ-LkO3UEL-nozBUp3QtfWPw7o7kaks6Qw/viewform?edit_requested=true#responses

また、自分以外に編集可能なユーザーがいる場合はD列に表示されます。

すでに退職されている方や、一時的な編集者がD列に残っている場合は、個人情報漏洩のリスクを回避するために編集者権限を削除してください。

また、一般的なアクセス設定で「リンクを知っている全員」に設定されている場合はE列に「anyone」が表示されます。

Googleフォームで個人情報を記入する場合は、アクセス設定で「リンクを知っている全員」に設定する必要はないので、もし設定されている場合は必ず変更したほうが良いです。

「リンクを知っている全員」に設定していると、回答から個人情報が漏洩する可能性がありますので、必ず変更してください。