このサンプルでは、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);