Created
May 28, 2021 10:11
-
-
Save Tomokatsu-Sakamoto/4bac28f2d777ad08c9ab6b06a283b41b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//---------------------------------------------------------------------------- | |
// スプレッドシートにメニュー項目を追加する | |
function onOpen( ) { | |
Logger.log( "[開始] メニュー項目を追加" ); | |
SpreadsheetApp.getUi( ) | |
.createMenu( '組織部門の取得' ) | |
.addItem( '組織部門の取得', 'orgunitsList' ) | |
.addSeparator( ) | |
.addItem( '作業域のクリア', 'clearCells' ) | |
.addToUi( ); | |
Logger.log( "[終了] メニュー項目を追加" ); | |
} | |
//---------------------------------------------------------------------------- | |
// 作業域(A:I)をクリアする | |
function clearCells( ) { | |
var sheet = SpreadsheetApp.getActiveSheet( ); | |
// 組織部門の情報 | |
// https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits#OrgUnit | |
var labelString = [ | |
"orgUnitPath", // "orgUnitPath": string, | |
// The full path to the organizational unit. The orgUnitPath is a derived property. | |
// 組織部門へのフルパス。orgUnitPath派生プロパティです。 | |
"name", // "name": string, | |
// The organizational unit's path name. | |
// 組織部門のパス名。 | |
"description", // "description": string, | |
// Description of the organizational unit. | |
// 組織部門の説明。 | |
"kind", // "kind": string, | |
// The type of the API resource. For Orgunits resources, the value is admin#directory#orgUnit. | |
// APIリソースのタイプ。Orgunitsリソースの場合、値はadmin#directory#orgUnitです。 | |
"etag", // "etag": string, | |
// ETag of the resource. | |
// リソースのETag。 | |
"parentOrgUnitPath", // "parentOrgUnitPath": string | |
// The organizational unit's parent path. | |
// 組織部門の親パス。 | |
"parentOrgUnitId", // "parentOrgUnitId": string, | |
// The unique ID of the parent organizational unit. | |
// 親組織部門の一意のID。 | |
"orgUnitId", // "orgUnitId": string, | |
// The unique ID of the organizational unit. | |
// 組織部門の一意のID。 | |
"blockInheritance", // "blockInheritance": boolean, | |
// Determines if a sub-organizational unit can inherit the settings of the parent organization. | |
// The default value is false, meaning a sub-organizational unit inherits the settings of the nearest parent organizational unit. | |
// サブ組織部門が親組織部門の設定を継承できるかどうかを決定します。 | |
// デフォルト値はですfalse。これは、下位組織部門が最も近い親組織部門の設定を継承することを意味します。 | |
]; | |
// 一旦すべて削除 | |
sheet.getRange( "A1:I1000" ).clearContent( ); | |
// 1行目にラベルとなる文字列を設定 | |
for ( var i = 0 ; i < labelString.length ; i++ ) { | |
sheet.getRange( 1, i + 1 ).setNumberFormat( "@" ); // 「書式なしテキスト」 | |
sheet.getRange( 1, i + 1 ).setBackgroundRGB( 201, 218, 248 ); | |
sheet.getRange( 1, i + 1 ).setValue( labelString[ i ] ); | |
} | |
// 行と列を固定とする | |
// https://developers.google.com/apps-script/reference/spreadsheet/sheet#setfrozenrowsrows | |
// https://developers.google.com/apps-script/reference/spreadsheet/sheet#setfrozencolumnscolumns | |
sheet.setFrozenRows( 1 ); // 1行 固定 | |
sheet.setFrozenColumns( 2 ); // 2列 固定 | |
// C2 にカーソルを設定 | |
sheet.getRange( "C2" ).activate( ); | |
SpreadsheetApp.flush(); // シートの再描画 | |
} | |
//---------------------------------------------------------------------------- | |
// 作業域に組織部門を読み込む | |
function orgunitsList( ) { | |
var sheet = SpreadsheetApp.getActiveSheet( ); | |
// 作業域のクリア | |
clearCells( ); // 一旦すべて削除 | |
// 組織部門の取得 | |
// https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits/list | |
var orgunits = AdminDirectory.Orgunits.list( "my_customer", { orgUnitPath : "/", type : "ALL" } ); | |
// 取得した組織部門をスプレッドシートに書き出し | |
for ( var i = 0 ; i < orgunits.organizationUnits.length ; i++ ) { | |
var row = 2 + i; | |
var orgunit = orgunits.organizationUnits[ i ]; | |
// どの値も string なので、セルには表示形式として「書式なしテキスト」を設定 | |
for ( var j = 1 ; j <= 9 ; j++ ) { | |
sheet.getRange( row, j ).setNumberFormat( "@" ); // 「書式なしテキスト」 | |
sheet.getRange( row, j ).setWrapStrategy( SpreadsheetApp.WrapStrategy.CLIP ); //切り詰める | |
} | |
j = 1; | |
// 組織部門の情報をセルに書き出す | |
// https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits#OrgUnit | |
sheet.getRange( row, j++ ).setValue( orgunit.orgUnitPath ); // "orgUnitPath": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.name ); // "name": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.description ); // "description": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.kind ); // "kind": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.etag ); // "etag": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.parentOrgUnitPath ); // "parentOrgUnitPath": string | |
sheet.getRange( row, j++ ).setValue( orgunit.parentOrgUnitId ); // "parentOrgUnitId": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.orgUnitId ); // "orgUnitId": string, | |
sheet.getRange( row, j++ ).setValue( orgunit.blockInheritance ); // "blockInheritance": boolean, | |
/* | |
SpreadsheetApp.flush(); // シートの再描画 | |
*/ | |
} | |
// 書き出した情報を orgUnitPath をキーにしてソートする | |
sheet.getRange( "A2:I1000" ).sort( { column: 1, ascending: true } ); // 1 : orgUnitPath | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment