9月 232023
Flutter で Google drive の createdTime, modifiedTime を取得するには?
$fields を明示しないと取得できなかった。
Future<void> _test(String folderId) async {
final jsonString = await rootBundle.loadString(
'assets/google_sheet_auth.json');
final jsonData = json.decode(jsonString);
final credentials = ServiceAccountCredentials.fromJson(jsonData);
final scopes = [
drive.DriveApi.driveReadonlyScope,
// drive.DriveApi.driveMetadataReadonlyScope,
// SheetsApi.spreadsheetsReadonlyScope,
];
final client = await clientViaServiceAccount(credentials, scopes);
var driveApi = drive.DriveApi(client);
drive.FileList files = await driveApi.files.list(
q: "'$folderId' in parents",
$fields: 'files(id, name, mimeType, createdTime, modifiedTime)',
);
for (drive.File file in files.files ?? []) {
log.d('${file.name} createdTime: ${file.createdTime} modifiedTime: ${file.modifiedTime}');
}
try {
final _file = await driveApi.files.get(folderId,
$fields: 'files(id, name, mimeType, createdTime, modifiedTime)',
) as drive.File;
// ファイル情報が取得できた場合の処理
log.d('${_file.name} createdTime: ${_file.createdTime} modifiedTime: ${_file.modifiedTime} ');
} catch (e) {
// ファイルが見つからなかった場合やエラーが発生した場合の処理
print('エラー: $e');
}
client.close();
}
ChatGPTに聞くと
google drive のファイルのタイムスタンプを取得する事はできますか?
はい、Google Driveのファイルのタイムスタンプを取得することは可能です。Google Drive APIを使用してファイルのメタデータを取得することで、ファイルの作成日時や最終更新日時などの情報を取得できます。
以下は、Google Driveファイルのメタデータを取得して、作成日時と最終更新日時を取得するDartコードの例です。
import 'package:googleapis/drive/v3.dart' as drive;
import 'package:googleapis_auth/auth_io.dart';
Future<void> getFileTimestamp(String fileId) async {
final jsonString = await rootBundle.loadString('assets/google_sheet_auth.json');
final jsonData = json.decode(jsonString);
final credentials = ServiceAccountCredentials.fromJson(jsonData);
final scopes = [drive.DriveApi.driveMetadataReadonlyScope];
final client = await clientViaServiceAccount(credentials, scopes);
final driveApi = drive.DriveApi(client);
try {
final file = await driveApi.files.get(fileId);
final createdTime = file.createdTime;
final modifiedTime = file.modifiedTime;
print('ファイルの作成日時: $createdTime');
print('ファイルの最終更新日時: $modifiedTime');
} catch (e) {
print('エラー: $e');
} finally {
client.close();
}
}
void main() {
getFileTimestamp('YOUR_GOOGLE_DRIVE_FILE_ID');
}
ってことで、上記では取得できませんでした。