カテゴリー
 データポータル・その他

データポータル – BigQuery と連携

このドキュメントでは、データポータル のレポートでの BigQuery のデータをデータソースとして連携する方法を紹介します。

データポータル のサンプルレポート

BigQuery と連携したデータポータルのサンプルレポート

BigQuery にエクスポートされた Google Workspace の履歴をデータソースとしてレポートを作成します。

レポートのサンプル(新しいタブで開きます)
レポートのサンプル(新しいタブで開きます)

データソースの設定

Google Workspace の利用状況を BigQuery にエクスポートするための設定を行います。
BigQuery Export を設定する を参考に設定を行ってください。

データソースとして、エクスポートされた BigQuery のテーブルを指定します。

メニューから[リソース] – [追加済みのデータソースの管理]を選択します。

[データソースを追加]を選択

[ BigQuery ]を選択します。

[BigQuery]欄から利用する[プロジェクト]-[データセット]-[表]を選択します。

追加されたデータソースをレポートで利用できます。

カテゴリー
 データポータル・その他

データポータル – スプレッドシートを活用

このドキュメントでは、Google データポータルのレポートでのスプレッドシートのデータとの連携方法を紹介します。

データポータルのサンプル レポート

スプレッドシート との連携

Google Drive に保存されたスプレッドシートをデータソースとしてレポートを作成します。

レポートのサンプル(新しいタブで開きます)
データソースの設定

データソースとして、Google Drive のスプレッドシートを指定します。

メニューから[リソース] – [追加済みのデータソースの管理]を選択します。

[データソースを追加]を選択

[Google スプレッドシート]を選択します。

[スプレッドシート]欄から利用するスプレッドシートを選択します。

追加されたデータソースをレポートで利用できます。

カテゴリー
 開発者向けサンプル

Sheets API

このサンプルでは Google Sheets API を使用して、Web アプリケーションからスプレッドシートの作成、書式の設定、ピボットテーブルを生成する方法を紹介します。
ここで扱うサンプル ソースコードは  こちら(github.com) からダウンロードできます。

アプリサンプル 空のスプレッドシートを作成する
ドライブ で確認する

スプレッドシートの操作

スプレッドシートの作成とシートの追加

新しいスプレッドシートを作成し、シートを追加します。

/**
* スプレッドシート の作成
* $client: Googleクライアント
*/
public function createEmptySpreadsheet($client) {

    try {
        // スプレッドシート サービス オブジェクトを生成
        $service = new \Google_Service_Sheets($client);

        // スプレッドシート を作成
        $postBody = new \Google_Service_Sheets_Spreadsheet([
            'properties' => [
                'title' => 'New Spreadsheet 1' // スプレッドシート名
            ]
        ]);

        $optParams = array();
        $spreadsheet = $service->spreadsheets->create($postBody, $optParams);
        $spreadsheetId = $spreadsheet->spreadsheetId;

        // 新しいシートを追加
        $body = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
            'requests' => [
                'addSheet' => [
                    'properties' => [
                        'title' => 'New Sheet 1' // シート名
                    ]
                ]
            ]
        ]);

        $response = $service->spreadsheets->batchUpdate($spreadsheetId, $body);

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

デモを実行すると、[New Spreadsheet 1]という名前のスプレッドシートを作成し、[New Sheet 1]シートを追加します。

データの書き出し

スプレッドシートにデータを出力します。

アプリサンプル スプレッドシートに保存する
ドライブ で確認する
/**
* スプレッドシートへのデータの書き出し
* $client: Googleクライアント
*/
public function develSpreadsheetExportcsv($client) {

    // 出力するデータ
    $values = [
        ["id","class","email","name","math","science","english"],
        ["1","1A","john@example.com","John J. Coons","90","88","96"],
        ["2","1A","crystal@example.com","Crystal C. Burnett","32","44","89"],
        ["3","1B","anthony@example.com","Anthony T. Dudley","72","68","24"],
        ["4","1B","francisca@example.com","Francisca H. Rapp","89","94","92"]
    ];
    $range = 'CSV 1!A1:G5';

    try {
        // スプレッドシートサービス オブジェクトを生成
        $service = new \Google_Service_Sheets($client);

        // スプレッドシートを作成
        $postBody = new \Google_Service_Sheets_Spreadsheet([
            'properties' => [
                'title' => 'CSV import 1' // スプレッドシート名
            ]
        ]);

        $optParams = array();
        $spreadsheet = $service->spreadsheets->create($postBody, $optParams);
        $spreadsheetId = $spreadsheet->spreadsheetId;
        $this->csvSpreadsheetId = $spreadsheetId;

        // 新しいシートを追加
        $body = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
            'requests' => [
                'addSheet' => [
                    'properties' => [
                        'title' => 'CSV 1'
                    ]
                ]
            ]
        ]);
        $response = $service->spreadsheets->batchUpdate($spreadsheetId, $body);

        // 出力するデータを準備
        $body = new \Google_Service_Sheets_ValueRange([
            'values' => $values
        ]);
        $body->setValues($values);

        $params = ['valueInputOption' => 'USER_ENTERED'];

        // データを出力
        $result = $service->spreadsheets_values->update(
            $spreadsheetId, // スプレッドシートID
            $range, // 出力先のデータレンジ
            $body, // 出力データ
            $params // 出力オプション
        );

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

デモを実行すると、[CSV import 1]という名前でスプレッドシート を作成し、データを保存します。

書式の設定

保存したスプレッドシートに書式(セルの色指定)します。

アプリサンプル   書式を設定する
ドライブで確認する
/**
* スプレッドシートの書式設定
* $client: Googleクライアント
*/
public function formatSpreadsheet($client) {

    try {
        // ドライブサービス オブジェクトを生成
        $driveClient = new \Google_Service_Drive($client);

        // 名前を指定してドライブ 内のスプレッドシートを検索
        $result = $driveClient->files->listFiles([
            "q" => "name='CSV import 1'"
        ]);
        $file = $result->getFiles()[0];
        $spreadsheet_id = $file->getId();

        // スプレッドシートサービス オブジェクトを生成
        $spreadsheet_service = new \Google_Service_Sheets($client);

        // シートIDを取得
        $sheet_id;
        $response = $spreadsheet_service->spreadsheets->get($spreadsheet_id);
        $sheets = $response->getSheets();
        foreach ($sheets as $sheet) {
            $properties = $sheet->getProperties();
            $sheet_title = $properties->getTitle();
            
            // 名前の一致するシートを検索
            if ($sheet_title == "CSV 1") {
                $sheet_id = $properties->getSheetId();
                break;
            }
        }

        // 書式を設定する範囲と書式を準備
        $request_data = [
            'repeatCell' => [
                'fields' => 'userEnteredFormat(backgroundColor)',
                'range' => [
                    'sheetId' => $sheet_id,
                    'startRowIndex' => 0, // 行の開始位置
                    'startColumnIndex' => 0, // 列の開始位置
                    'endRowIndex' => 5, // 行の終了位置
                    'endColumnIndex' => 7, // 列の終了位置
                ],
                'cell' => [
                    'userEnteredFormat' => [
                        'backgroundColor' => [  // RGB値でセルの背景色を指定
                            'red' => 234/255,
                            'green' => 143/255,
                            'blue' => 143/255
                        ]
                    ],
                ],
            ],
        ];
        $requests = [new \Google_Service_Sheets_Request($request_data)];

        // 書式を設定
        $batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
            'requests' => $requests
        ]);
        $response = $spreadsheet_service->spreadsheets->batchUpdate($spreadsheet_id, $batchUpdateRequest);

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

デモを実行すると、userEnteredValue プロパティを設定してスプレッドシートの書式を指定します。

ピボットテーブルの生成

保存したスプレッドシート のデータを元にピボットテーブルを生成します。

アプリサンプル ピボットテーブルを生成する
ドライブ で確認する
/**
* ピボットテーブルの生成
* $client: Googleクライアント
*/
public function develSpreadsheetGenerate($client) {

    try {
        // ドライブサービス オブジェクトを生成
        $driveClient = new \Google_Service_Drive($client);

        // 名前を指定してドライブ内のスプレッドシートを検索
        $result = $driveClient->files->listFiles([
            "q" => "name='CSV import 1'"
        ]);
        $file = $result->getFiles()[0];
        $spreadsheet_id = $file->getId();

        // スプレッドシートサービス オブジェクトを生成
        $spreadsheet_service = new \Google_Service_Sheets($client);

        // シートIDを取得
        $sheet_id;
        $response = $spreadsheet_service->spreadsheets->get($spreadsheet_id);
        $sheets = $response->getSheets();
        foreach ($sheets as $sheet) {
            $properties = $sheet->getProperties();
            $sheet_title = $properties->getTitle();

            // 名前の一致するシートを検索
            if ($sheet_title == "CSV 1") {
                $sheet_id = $properties->getSheetId();
                break;
            }
        }

        // ピボットテーブルの設定を準備
        $requests = [
            'updateCells' => [
                'rows' => [
                    'values' => [
                        [
                            'pivotTable' => [
                                'source' => [
                                    'sheetId' => $sheet_id,
                                    'startRowIndex' => 0, // 行の開始位置
                                    'startColumnIndex' => 0, // 列の開始位置
                                    'endRowIndex' => 5, // 行の終了位置
                                    'endColumnIndex' => 7 // 列の終了位置
                                ],
                                'rows' => [
                                    [
                                        'sourceColumnOffset' => 1,
                                        'sortOrder' => 'ASCENDING',
                                        'showTotals' => true,
                                    ],
                                    [
                                        'sourceColumnOffset' => 2,
                                        'sortOrder' => 'ASCENDING',
                                        'showTotals' => true,
                                    ]
                                ],
                                'values' => [
                                    [
                                        'summarizeFunction' => 'AVERAGE', // 平均値を出力
                                        'sourceColumnOffset' => 4
                                    ],
                                    [
                                        'summarizeFunction' => 'AVERAGE', // 平均値を出力
                                        'sourceColumnOffset' => 5
                                    ],
                                    [
                                        'summarizeFunction' => 'AVERAGE', // 平均値を出力
                                        'sourceColumnOffset' => 6
                                    ]
                                ],
                            ]
                        ]
                    ]
                ],
                'start' => [
                    'sheetId' => $sheet_id,
                    'rowIndex' => 7,
                    'columnIndex' => 2
                ],
                'fields' => 'pivotTable'
            ]
        ];

        // ピボットテーブルを生成
        $batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
            'requests' => $requests
        ]);
        $response = $spreadsheet_service->spreadsheets->batchUpdate($spreadsheet_id, $batchUpdateRequest);

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

pivotTable プロパティを指定して、ピボットテーブルを生成します。

カテゴリー
 開発者向けサンプル

Calendar API

このサンプルでは、Calendar API を使用して、登録済みの予定を取得するサンプルを紹介します。
ここで扱うサンプル ソースコードは  こちら(github.com) からダウンロードできます。

カレンダーの操作

予定の取得

Calendar API を使用して、登録された予定(イベント)の一覧を取得します。

アプリサンプル 予定を取得する (新しいタブで予定情報を取得します)
/**
* カレンダーのイベント一覧を取得
* $client: Googleクライアント
*/
public function listEvents($client) {

    // カレンダーサービス オブジェクトを生成
    $calendarClient = new \Google_Service_Calendar($client);

    $param = array(
        'orderBy' => 'startTime', // 開始日時順にソート
        'maxResults' => 10,
        'singleEvents' => true,
        'timeMin' => date('c')
    );

    // イベント一覧を取得
    $result = $calendarClient->events->listEvents($param);

    // レスポンスからイベント一覧を取得
    return $result->getItems();
}

カテゴリー
 開発者向けサンプル

Google Picker API

このサンプルでは、Google ドライブのファイルを選択するための Picker API の使い方を紹介します。
ここで扱うサンプル ソースコードは  こちら(github.com) からダウンロードできます。


アプリサンプル Picker を表示する

Google ドライブからのファイル選択

ファイルの選択ダイアログ

Webページに、Google API の JavaScript ファイルをロードします。

<script type="text/javascript" src="https://apis.google.com/js/api.js"></script>

ボタンをクリックしたら API の初期化を行います。
※ 2回目 以降のクリック時は初期化は行いません。

function showPicker() {
    // 初期化が完了していれば、Picker生成
    if (pickerApiLoaded && oauthToken) {
        createPicker();
        return;
    }

    // Auth未初期化の場合は初期化
    if ( !oauthToken ) {
        gapi.load('auth', {'callback': onAuthApiLoad});
    }

    // Picker API 未ロードの場合はロード
    if ( !pickerApiLoaded ) {
        gapi.load('picker', {'callback': onPickerApiLoad});
    }
}
Auth の初期化
function onAuthApiLoad() {
    // Auth初期化
    window.gapi.auth.authorize( {
        'client_id': clientId,
        'scope': scope,
        'immediate': false
    }, function(authResult) {
        if (authResult && !authResult.error) {
            // 取得したアクセストークンを保持
            oauthToken = authResult.access_token;

            // 初期化が完了したら、Picker 生成
            createPicker();
        }
    });
}
Picker の初期化
function onPickerApiLoad() {
    // Picker APIがロードされたらフラグを立てる     
    pickerApiLoaded = true;

    // ロードが完了したら、Picker 生成
    createPicker();
}

2つの API が 初期化されたら Picker を表示します。

function createPicker() {
    //  初期化が完了していればPicker生成        
    if (pickerApiLoaded && oauthToken) {
        let picker = new google.picker.PickerBuilder().
            addView(google.picker.ViewId.DOCS).
            setOAuthToken(oauthToken).
            setDeveloperKey(developerKey).
            setCallback(pickerCallback).
            build();

        // Picker表示
        picker.setVisible(true);
    }
}
ファイルの選択

Picker で選択されたファイルを、 Callback 関数で受け取ります。

function pickerCallback(data) {
        let url = 'nothing';
        document.getElementById('picker_result').innerHTML = '';
        if (data.action == 'picked' ) {
            let doc = data.docs[0];
            if ( doc ) {
                // ...
            }
       }
}

カテゴリー
 開発者向けサンプル

Classroom API

このサンプルでは、Google Classroom の課題としてウェブコンテンツ(URL)を公開する方法を記載しています。

ここで扱うサンプルソースコードは  こちら(github.com) からダウンロードできます。

Classroom に公開する

サイトの公開

コース(クラス)を指定して、サイトを公開します。

このサイトをClassroom に公開する
Classroom でクラスを確認する
/**
* WebサイトをClassroomに公開
* $client: Googleクライアント
* $courseId: Google ClassroomのコースID
*/
public function develUrlShare($client, $courseId) {

    // Google Classroomサービス オブジェクトを生成
    $service = new \Google_Service_Classroom($client);

    try {

        // Google ClassroomのコースワークとしてURLを公開
        $postBody = new \Google_Service_Classroom_CourseWork(array(
            "workType" => "ASSIGNMENT",
            "title" => "Share form API Demo", // コースワークタイトル
            "state" => "PUBLISHED", // 公開状態に設定
            "materials"=>[
                'link'=>[
                    'url'=>'https://apidemo.ddrive.cloud/', // 公開するURL
                    'title'=>'API Demo', // URLの名前
                    'thumbnailUrl'=>'https://classroom.google.com/webthumbnail?url=https://apidemo.ddrive.cloud/'
                    ]
            ]
        ));
        $coursework = $service->courses_courseWork->create($courseId, $postBody, array());

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

サイトへのリンクを貼付して、コースに課題を作成して公開します。

デモを実行すると、選択したコースに本サイト(https://apidemo.ddrive.cloud/)が公開されます

カテゴリー
 開発者向けサンプル

Drive API

このサンプルでは、Google ドライブへのファイル保存、共有ドライブへのファイルの保存についてのコードを記載しています。
Google ドライブは Google_Service_Drive サービス使用して操作します。
ここで扱うサンプル ソースコードは  こちら(github.com) からダウンロードできます。

Google ドライブでのファイル操作

フォルダへのファイルの保存
アプリサンプル ファイルを保存する
Google ドライブ で確認する

マイフォルダにファイルを作成するには、Google_Service_Drive_Files_Resource.create を使用します。

/**
* ドライブにファイルを作成
* $client: Googleクライアント
*/
public function createFile($client) {

    try {
        // ドライブサービス オブジェクトを生成
        $driveClient = new \Google_Service_Drive($client);

        // 作成するファイルの情報を準備
        $fileMetadata = new \Google_Service_Drive_DriveFile([
            'name' => 'sample.txt' // ファイル名
        ]);

        // ファイルを作成
        $driveClient->files->create($fileMetadata, [
            'data' => 'This is a sample file.', // ファイルの内容
            'mimeType' => ' text/plain', // MIMEタイプ: テキストファイル
            'uploadType' => 'media',
            'fields' => 'id',
        ]);

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

保存するファイル名、ファイルの内容、ファイルタイプを指定して、Google_Service_Drive_Files_Resource.create関数を呼び出します。
保存が完了すると、ファイルオブジェクトが返されます。

ファイルのコピー
アプリサンプル ファイルをコピーする
Google ドライブ で確認する

マイフォルダにあるファイルのコピーは、Google_Service_Drive_Files_Resource.copy メソッド を使用して行います。

/**
* ドライブ内のファイルをコピー
* $client: Googleクライアント
*/
public function copyFile($client) {

    try {
        // ドライブサービス オブジェクトを生成
        $driveClient = new \Google_Service_Drive($client);

        // 作成するファイルの情報を準備
        $fileMetadata = new \Google_Service_Drive_DriveFile([
            'name' => 'sampleのコピー.txt', // コピー後のファイル名
            'parents' => ['root'], // コピー先
        ]);

        // ドライブ内のファイルを検索
        $result = $driveClient->files->listFiles([
            "q" => "name='sample.txt'" // ファイル名を指定
        ]);
        $file = $result->getFiles()[0];

        // ファイルをコピー
        $driveClient->files->copy($file->getId(), $fileMetadata);

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

デモを実行すると、ドライブ内の [sample.txt] ファイルを [sampleのコピー.txt] にコピーします。

ファイルのリネーム
アプリサンプル ファイルのリネームを試す
Google ドライブ で確認する

Google_Service_Drive_Files_Resource.update でファイルの名前を変更します。

/**
* ドライブ内のファイルの名前を変更
* $client: Googleクライアント
*/
public function renameFile($client) {

    try {
        // ドライブサービス オブジェクトを生成
        $driveClient = new \Google_Service_Drive($client);

        // 変更後のファイルの情報を準備
        $fileMetadata = new \Google_Service_Drive_DriveFile();
        $fileMetadata->setName('Google.txt');

        // ドライブ内のファイルを検索
        $result = $driveClient->files->listFiles([
            "q" => "name='sample.txt'"
        ]);
        $file = $result->getFiles()[0];

        // ファイル名を変更
        $driveClient->files->update($file->getId(), $fileMetadata, array());

    } catch(\Exception $e) {
        $msg = $e -> getMessage();
        return $msg;
    }
}

デモを実行すると、ドライブ内の [sample.txt] ファイルを [Google.txt]にリネームします。

共有ドライブでのファイル操作

共有ドライブの作成

Google Apps Script を利用して共有ドライブを操作するには、新しいドライブ を作成し、共有ドライブ 下に挿入します。

    // 共有ドライブ名"Shared Folder 1"を準備
    let teamDrive = Drive.newTeamDrive();
    teamDrive.name = 'Shared Folder 1';

    // 共有ドライブの下に新しいドライブを作成
    let driveId = Utilities.getUuid();
    let newTeamDrive = Drive.Teamdrives.insert(teamDrive, driveId);

Drive.newTeamDrive で、新しいドライブを作成し、名前を設定します。 作成されたドライブ は、このままでは利用できません。Drive.Teamdrives.insert を呼び出して共有ドライブの下に配置することで、共有ドライブとしてアクセスできるようになります。

共有ドライブのドライブ を通常のフォルダとして扱う

共有ドライブ は、DriveApp のフォルダに変換することで、通常の Google ドライブ内のフォルダと同じように扱うことができます。

    // 共有ドライブ名"Shared Folder 1"を準備
    let teamDrive = Drive.newTeamDrive();
    teamDrive.name = 'Shared Folder 1';

    // 共有ドライブを通常フォルダのオブジェクトとして扱う
    let teamFolder = DriveApp.getFolderById ( newTeamDrive.id );
    let subFolder = teamFolder.createFolder('Sub Shared Folder 1');

DriveApp.Folder.crateFolder でフォルダを作成することができます。

フォルダにファイルを作成

ファイルの作成も Googleドライブと同じ方法で実行できます。

  // マイフォルダと同様の順でファイルを作成
  let file = subFolder.createFile('OK.txt', 'OK Google.', MimeType.PLAIN_TEXT);

カテゴリー
 管理者向けサンプル

Directory API

このサンプルでは、Directory API を使った、Google Workspace for Education ドメインの管理についてGoogle Apps Script のコードを記載しています。
Google Workspace for Education のグループ、Chromebook デバイスの情報を取得するサンプルを紹介します。
ここで扱うサンプル ソースコードは  こちら(github.com) からダウンロードできます。

グループ操作

グループ一覧の取得
グループを取得する ※スプレッドシートをコピーする Google アカウントが必要です

グループの一覧を取得します。

/**
* グループ一覧の取得
*/
function getGroupList() {

  // シート名を指定してスプレッドシート を取得
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = spreadsheet.getSheetByName('Group');

  // シート内のコンテンツをクリア
  sheet.getDataRange().clear();

  // 1行目 - ヘッダー出力
  let line = [
    'id',
    'email',
    'name',
    'description',
    'directMemberCount',
    'kind',
  ];
  let range = sheet.getRange(2, 1, 1, line.length);
  range.setValues([line]);

  // 自ドメインを指定
  let param = {
    'customer': 'my_customer',
    'maxResulsts': 200,
  };

  // グループ一覧を取得
  let response = AdminDirectory.Groups.list(param);
  if ( response ) {

    // レスポンスからグループ一覧を取得
    let groupList = response.groups;

    if (groupList) {

      for (let listIndex=0; listIndex<groupList.length; listIndex++) {
        // 結果をシートに出力
        line = [
          groupList[listIndex].id, // グループID
          groupList[listIndex].email, // メールアドレス
          groupList[listIndex].name, // グループ名
          groupList[listIndex].description, // 説明
          groupList[listIndex].directMemberCount, // 直接のメンバー数
          groupList[listIndex].kind, // タイプ
        ];
        range = sheet.getRange(3+listIndex, 1, 1, line.length);
        range.setValues([line]);
      }
    }
  }
}

AdminDirectory.Groups.list メソッドを呼び出します。パラメータとして、[customer] = [my_customer]を指定すると、自ドメインの情報が取得できます。

ChromeOS デバイス操作

デバイス一覧の取得
デバイス一覧を取得する ※スプレッドシートをコピーする Google アカウントが必要です

Directory API を使用して、ChromeOS デバイスの一覧を取得します。

/**
* ChromeOSデバイス一覧の取得
*/
function getChromeList() {

  // シート名を指定してスプレッドシートを取得
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = spreadsheet.getSheetByName('ChromeOS');

  // シート内のコンテンツをクリア
  sheet.getDataRange().clear();

  // 1行目 - ヘッダー出力
  let line = [
    'deviceId',
    'serialNumber',
    'status',
    'model',
    'osVersion',
    'macAddress',
    'orgUnitPath',
  ];
  let range = sheet.getRange(2, 1, 1, line.length);
  range.setValues([line]);

  let param = {
    'maxResulsts': 9999,
  };

  // ChromeOSデバイス一覧を取得
  let response = AdminDirectory.Chromeosdevices.list ('my_customer', param);
  if (response) {

    // レスポンスからChromeOSデバイス一覧を取得
    let chromeList = response.chromeosdevices;
    if ( chromeList ) {

      for (let listIndex=0; listIndex<chromeList.length; listIndex++) {
        // 結果をシートに出力
        line = [
          chromeList[listIndex].deviceId, // デバイスID
          chromeList[listIndex].serialNumber, // シリアル番号
          chromeList[listIndex].status, // ステータス
          chromeList[listIndex].model, // モデル情報
          chromeList[listIndex].osVersion, // オペレーティングシステムのバージョン
          chromeList[listIndex].macAddress, // ワイヤレスMACアドレス
          chromeList[listIndex].orgUnitPath, // 組織単位
        ];
        range = sheet.getRange(3+listIndex, 1, 1, line.length);
        range.setValues([line]);
      }
    }
  }
}

AdminDirectory.Chromeosdevices.list メソッドを呼び出します。パラメータとして[my_customer]を指定すると、自ドメインの情報が取得できます。

カテゴリー
 管理者向けサンプル

Classroom API

このサンプルでは、Google Classroom でのクラスの作成、編集についての Google Apps Script のコードを記載しています。ここで扱うサンプル ソースコードは  こちら(github.com) からダウンロードできます。

以下のリンクから Google Classroom を操作するサンプル スプレッドシートがコピー可能です。まずは Classroom の設定を行っている Google アカウント を選択し、スプレッドシートをコピーしてお使いください。

Google Classroom の操作サンプル ※スプレッドシートをコピーするGoogle アカウントが必要です
コース(クラス)を Google Classroom で確認する

Google Classroom の操作

コース(クラス)一覧の取得

登録済みのコース(クラス)の一覧を取得します。

/**
* コース一覧の取得
*/
function getCourseList() {

  // シート名を指定してスプレッドシート を取得
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = spreadsheet.getSheetByName('Classroom Info');

  // シート内のコンテンツをクリア
  sheet.getDataRange().clear();

  // 1行目 - ヘッダー出力
  let line = [
    'role',
    'id',
    'name',
    'section',
    'description',
    'room',
    'ownerId',
  ];
  let range = sheet.getRange(2, 1, 1, line.length);
  range.setValues([line]);

  // 教師・学習者それぞれ取得
  const roles = ['teacher', 'student'];
  for (let roleIndex=0; roleIndex<roles.length; roleIndex++) {
    let param = {};
    // 自分が担当・所属するコースを指定
    param[`${roles[roleIndex]}Id`] = 'me';

    // コース一覧を取得
    let response = Classroom.Courses.list(param);

    if (response) {

      // レスポンスからコース一覧を取得
      let courses = response.courses;

      if (courses) {

        for (let courseIndex=0; courseIndex<courses.length; courseIndex++) {
          // 結果をシートに出力
          line = [
            roles[roleIndex],
            courses[courseIndex].id, // コースID
            courses[courseIndex].name, // コース名
            courses[courseIndex].section, // セクション
            courses[courseIndex].description, // 説明
            courses[courseIndex].room, // 教室
            courses[courseIndex].ownerId, // 担当教師(オーナー)
          ];
          range = sheet.getRange(3+courseIndex, 1, 1, line.length);
          range.setValues([line]);
        }
      }
    }
  }
}

登録済みのコース(クラス)の一覧を取得し、結果をスプレッドシートに出力します。

クラスの作成

新しいクラスを作成します。

/**
* コースの作成
*/
function createCourse() {

  // 作成するコース
  let newCourse = {
    'name': 'New Class 1', // コース名
    'section': 'section I', // セクション
    'description': 'This is a new course.', // 説明
    'room': 'Room A', // 教室
    'ownerId': 'me' // 担当教師(オーナー)
  };

  // コースを作成
  let createdCourse = Classroom.Courses.create (newCourse);

  // コースのIDを返却
  return createdCourse.id;
}

クラスの名前、セクションを指定して、クラスの情報を更新します。

コース(クラス)を編集する

登録済みのコース(クラス)の情報を更新します。

/*
* コース情報の更新
*/
function updateCourseInfo(newCourseId) {

  // コースの情報
  let updateCourse = {
    'name': 'New Class 2', // コース名
    'section': 'section II', // セクション
    'room': 'Room B', // 教室
  };

  // コースの情報を更新
  let updatedCourse = Classroom.Courses.update(updateCourse, newCourseId);
}

名前、セクション、教室を変更して、コース(クラス)の情報を更新します。

課題の管理

課題の作成

指定したコース(クラス)に課題を登録します。

/**
* コースに課題を登録
*/
function createCourseWork(newCourseId) {

  // 課題の情報
  let newCourseWork = {
    'title': 'New CourseWork 1', // タイトル
    'description': 'This is a new coursework.', // 説明
    'maxPoints': 100, // 得点
    'workType': 'ASSIGNMENT', // タイプ
    'state': 'PUBLISHED', // 公開
  };

  //課題を作成
  let createdCourseWork = Classroom.Courses.CourseWork.create(newCourseWork, newCourseId);

  // 課題のIDを返却
  return createdCourseWork.id;
}

課題の内容を指定し、課題を登録します。