GASでGWSのメールアドレス全件スプシに出力してみた

 2023.12.22 2023.12.23

 

 

はじめに

日本情通信の渡邊です。

記事はNI+C TeamGCP Advent Calendar 2023の23日目の記事となります。

今回はGoogleスプレッドシートの拡張機能からGoogle App Script(GAS)を利用して、GWSに存在するメールアドレスを(おそらく)すべて出力してみました。

コード

何はともあれコードです。今回はスプレッドシートの上部にメニューを追加して、そこからを動かせるようにしてみました。(利用する場合、シート名やメニュー名などは任意に変更してください。)


const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("シート1");

function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  SpreadsheetApp.getActive().toast("Access OK ","INFO",5);
  ui.createMenu('【カスタムメニュー】')
  .addItem('メールアドレス取得', 'getMailAddressList')
  .addToUi();
}


function getMailAddressList() {

  let row = 1

  // ヘッダの設定
  sheet.getRange(row,1).setValue("メールアドレス")
  sheet.getRange(row,2).setValue("姓名 or グループ名")
  sheet.getRange(row,3).setValue("種別")

  let userInfoList = AdminDirectory.Users.list({
    customer: 'my_customer',
    orderBy: 'email'
  })

  let groupInfoList = AdminDirectory.Groups.list({
    customer: 'my_customer',
    orderBy: 'email',

  })

  for (const userInfo of userInfoList.users) {
    for (const userEmail of userInfo.emails) {
      ++row
      sheet.getRange(row,1).setValue(userEmail.address)
      sheet.getRange(row,2).setValue(userInfo.name.familyName + " " + userInfo.name.givenName)
      sheet.getRange(row,3).setValue("ユーザー")
    }
  }

  for(const group of groupInfoList.groups){

    ++row
    sheet.getRange(row,1).setValue(group.email)
    sheet.getRange(row,2).setValue(group.name)
    sheet.getRange(row,3).setValue("グループ")

    let groupAlias = AdminDirectory.Groups.Aliases.list(group.id)

    if(typeof groupAlias.aliases === 'undefined'){
    }else{
      for(const alias of groupAlias.aliases){
        ++row
        sheet.getRange(row,1).setValue(alias.alias)
        sheet.getRange(row,2).setValue(group.name)
        sheet.getRange(row,3).setValue("グループ")
      }
    }
  }
  SpreadsheetApp.getActive().toast("作成処理完了: " + row + " 行","INFO",5);
}

設定

上記のコードをスプレッドシートと紐づけたGASに設定していきます。

  1. 新規のスプレッドシートを作成し、拡張機能からApp Scriptを選択する
    スプレッドシートからAppScriptを選択することで、スプレッドシートを操作する部分が楽になります。エクセルのVisual Studioのように使えて便利ですね。
    yuwata0001

  2. コードを貼り付け
    コード.gsにコードを貼り付け、保存します。
    yuwata0002

  3. Admin SDK APIサービスを追加
    GWSの情報を取得するためのサービスを追加します。コードの中で出てきている「AdminDirectory」が該当します。
    yuwata0003

  4. 保存ボタンをクリックし、忘れずに保存してください。
    yuwata0012

  5. 保存できたら、スプレッドシートを再読み込みしてください。

以上で設定は終了です。

いざ実行

設定が終わったので実行していきます。

  1. 追加したメニューからGASを実行
    スプレッドシートを再読み込みすると、カスタムメニューが追加されますので、そこから「メールアドレス取得」を選択します。
    yuwata0004

  2. 初回は認証が必要、かつGASの処理が実行されないので、再実行
    認証が求められられるのでOK、許可を押します。
    yuwata0005
    yuwata0006
    yuwata0007
    yuwata0008

  3. 再実行
    認証しただけでは処理は動かないので、再度実行します。
    yuwata0004

  4. データがスプレッドシートに出力される
    今回は、メールアドレスとユーザ名もしくはグループ名、ユーザーかグループかの種別の3カラムを出力してみました。
    yuwata0011-1

おわりに

GWSの情報を簡単にスプレッドシートに出力できました。GASを使えばGWSから様々な情報を出力でき、色々活用できますので、アレンジして使ってみてください。

Google Cloud、Google Workspace に関するご相談はXIMIXへ!

Google Cloud、Google Workspaceに関する お問い合わせはこちら

 


GASでGWSのメールアドレス全件スプシに出力してみた

BACK TO LIST