見出し画像

Google Apps Scriptによる共有ドライブの操作まとめ

ライター

本記事では、Google Apps Scriptによる共有ドライブの操作をまとめて掲載しています。

公式ドキュメントにはGoogle ドライブのリファレンスは存在するのですが、残念なことに共有ドライブについては見つかりません。(もしご存知でしたらご教示ください)

また、ネット上にも最新の共有ドライブの操作方法に関するまとめ記事はありませんでした。そのため、Google Apps Scriptで共有ドライブを操作する方法についてまとめましたのでご参考ください。

株式会社シクミヤではGoogle Apps Scriptを活用して低コストで仕組みによる現場業務の課題解決(自動化・効率化)を行っております。ぜひお気軽にご相談ください。

1. 共有ドライブとは

共有ドライブについての説明はGoogle公式ヘルプより引用させていただきます。

Google ドライブの共有ドライブでは、チームで使うファイルの保存、検索、および、ファイルへのアクセスができます。
共有ドライブ内のファイルは、個人ではなくチームが所有します。
メンバーがいなくなってもファイルはそのまま残るため、どこにいてもどのデバイスからでも、チームで引き続き情報を共有して仕事を進めることができます。

通常のGoogleドライブでは、フォルダやファイルといったアイテムの所有者(オーナー)は個人のアカウントになりますが、共有ドライブではチームが所有者になります。

例えば、従業員が離職する際には所有者を全て移譲してアイテムを存続させますが、共有ドライブではチームが所有者であるため、移譲の操作が不要となり、共有ドライブ内にアイテムが存続します。

1-1. 共有ドライブが利用可能なプラン(2020年10月)

Google Workspace
※2020年10月6日よりG Suiteから名称変更されました

- Google Workspace Business Standard
- Google Workspace Business Plus
- Google Workspace 大規模ビジネス

G Suite

- G Suite Enterprise
- G Suite Enterprise for Education
- G Suite Essentials
- G Suite Business
- G Suite for Education
- G Suite for Nonprofits


2. Google Apps Script コード集

共有ドライブを操作するコード集です。主に以下の操作についてのコードを記載しています。

・ 共有ドライブの作成
・ フォルダの作成
・ ファイルの作成
・ フォルダの移動
・ ファイルの移動
・ 共有ドライブの削除

Googleドライブは「DriveApp」を、共有ドライブは「Drive」を、それぞれ使用します。

また、Googleドライブ(DriveApp)と共有ドライブ(Drive)とで扱うオブジェクトは型が異なります

例えば、共有ドライブはTeamDrive型ですが、GoogleドライブではFolder型として扱います。
実際にはファイルまで含めるとDriveAppで操作する方が多くなりますので、Folder型に変換して操作する方が便利です。

2-1. 事前準備

共有ドライブの操作を実装する前に、スクリプトエディタで「Drive API」を有効化してください。

1. スクリプトエディタのメニュー > 「リソース」 > 「Googleの拡張サービス」 を選択

2. 「Drive API」を有効化

画像1


2-2. 共有ドライブの操作

下記のコードは切り貼りして使うこともできますし、そのままライブラリ化できるようにしてあります。複数のスクリプトで共通的に使うことになるかと思いますので、ライブラリ化することをオススメします。

ライブラリの作り方については以下をご参考ください。

共有ドライブの操作にはDrive.Teamdrivesにある以下のAPIが用意されています。

画像2

※各APIのリファレンス(非公式)は本記事末文に掲載しました

2-2-1. TeamDrive型からDrive型に変換

DriveAppで共有ドライブを扱えるように型を変換します。
DriveApp#getFolderById()に共有ドライブのIDを渡します。

2-2-2. 共有ドライブを取得

共有ドライブを名称から検索します。
Drive.Teamdrives.get()には、IDの指定が必須であるため、list()で全てのアイテムから名称に一致するものを検索します。

2-2-3. 共有ドライブを新規作成

まず、論理的な共有ドライブを作成し、共有ドライブの設定を行います。
その後、ユニークなアイテムIDを生成し、物理的に共有ドライブを追加します。

2-2-4. 共有ドライブにフォルダを作成

共有ドライブの直下にフォルダを作成します。Folderに変換して操作を行います。

2-2-5. 共有ドライブを削除

共有ドライブを削除するには、その直下のアイテムを全て削除する必要があります。
直下のフォルダとファイルを全て削除してから、共有ドライブ自体の削除を行います。

2-3. 共有ドライブの操作例

以下はライブラリ化せず、functionをそのまま使う形で実装するコード例です。

2-2.のコード集をライブラリ化した場合は、function名の前にライブラリの識別子を付与して読み替えてください。 ​

ライブラリ化した場合の例(識別子はTeamDriveLibrary)

const newTeamDriveA = TeamDriveLibrary.create('teamDriveA')

2-5. 参考)非公式APIリファレンス

以下、Drive.Teamdrivesで補完されるAPIについて、リファレンスを記載します。

画像3

optionalArgsに渡すオプションについては、以下が参考になります。
例)optionalArgsに設定するパラメータ例

const optionalArgs = {
 useDomainAdminAccess: true,
 q: "name contains 'teamDriveA'",
 fields: 'nextPageToken, items(id, name)',
 pageToken: 'XXXXX',
 pageSize: 1
}

Manage shared drives | Google Drive API | Google Developers
Search query terms | Google Drive API | Google Developers
drive.teamdrives.list - Drive | AnyAPI Documentation
Drive.Teamdrives.List (Drive API v3 (Rev. 197) 1.25.0)

get(String teamDriveId) : TeamDrive
IDを指定して共有ドライブを取得します。

[引数]
teamDriveId - 対象の共有ドライブID

[戻り値]
TeamDrive - IDに一致する共有ドライブオブジェクト

get(String teamDriveId, Object optionalArgs) : TeamDrive
IDとオプションを指定して共有ドライブを取得します。

[引数]
teamDriveId - 対象の共有ドライブID
optionalArgs - 指定するオプション

[戻り値]
TeamDrive - IDに一致する共有ドライブオブジェクト

insert(TeamDrive resource, String requestId) : TeamDrive
共有ドライブを新規に作成します。

[引数]
resource - 共有ドライブ(論理) Drive.newTeamDrive()で生成
requestId - 共有ドライブのユニークID Utilities.getUuid()で生

[戻り値]
TeamDrive - 作成した共有ドライブオブジェクト

list() : TeamDriveList
共有ドライブのリストを取得します。

[引数]
なし

[戻り値]
TeamDriveList - 共有ドライブリスト

list(Object optionalArgs) : TeamDriveList
オプションを指定して共有ドライブのリストを取得します。

[引数]
optionalArgs - 指定するオプション

[戻り値]
TeamDriveList - 共有ドライブリスト

remove(String teamDriveId) : void
共有ドライブを削除します。ただし、空でない共有ドライブは削除できません。空にしてから削除してください。

[引数]
teamDriveId - 対象の共有ドライブID

[戻り値]
なし

update(TeamDrive resource, String teamDriveId) : TeamDrive
共有ドライブの情報を更新します。

[引数]
resource - 更新情報のオブジェクト

[戻り値]
TeamDrive - 更新された共有ドライブ


弊社は業務効率化・自動化など、仕組みで解決するお手伝いをさせていただいております。お仕事のご依頼はコチラ↓までお願いいたします。

note: Visionary Base編集部
Twitter: @visionary_base

この記事が気に入ったらサポートをしてみませんか?