プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

SwiftのGoogleDrive APIでファイルを作成する。

この記事は2018年07月26日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. ファイル作成処理
  3. おわりに

詳解 Swift 第4版

詳解 Swift 第4版

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回はSwiftのGoogleDrive APIでファイルを作成してみます。

PWEditorでは、SwiftのGoogleDrive APIを操作するため、

を使用しています。

目次へ

2. ファイル作成処理

SwiftのGoogleDrive APIでファイルを作成するには、Google APIs Client Library for Objective-C For RESTライブラリのexecuteQueryメソッドを使用します。

以下に手順を示します。

  1. 空のファイルデータMIMEタイプを指定して、パラメータ(GTLRUploadParameters)オブジェクトを作成します。
  2. ファイル名パス名(実際は親ディレクトリのID)を指定して、ファイル(GTLRDrive_File)オブジェクトを作成します。
  3. 1で作成したパラメータ(GTRUploadParameters)オブジェクトと、2で作成したファイル(GTLRDrive_File)オブジェクトを指定して、クエリオブジェクトを作成します。
  4. 2で作成したクエリオブジェクトを指定して、executeQueryメソッドを実行し、ファイルを作成します。
    executeQueryメソッドの実行は、ネットワークにアクセスするため時間がかかかります。
    そのためPWEditorでは、通信中は処理中ダイアログを表示しています。
  5. execcuteQueryメソッドを実行した結果は、クロージャで返却されます。
    エラーの場合はerrorオブジェクトが設定されます。
import GoogleAPIClientForREST

/**
 GoogleDrive APIでファイルを作成します。

 - Parameter pathName: パス名(実際は親ディレクトリのID)
 - Parameter fileName: ファイル名
 */
func createFile(_ pathName: String, fileName: String) {
    // 1. 空のファイルデータとMIMEタイプを指定して、パラメータ(GTLRUploadParameters)オブジェクトを作成します。
    let data = Data()
    let mimeType = "text/plain"
    let uploadParameters = GTLRUploadParameters(data: data, mimeType: mimeType)

    // 2. 引数のファイル名とパス名(親ディレクトリのID)を指定して、ファイル(GTLRDrive_File)オブジェクトを作成します。
    let driveFile = GTLRDrive_File()
    driveFile.name = fileName
    driveFile.parents = [pathName]
    
    // 3. 作成したパラメータ(GTLRUploadParameters)オブジェクトとファイル(GTLRDrive_File)オブジェクトを指定して、
    //    クエリオブジェクトを作成します。
    let query = GTLRDriveQuery_FilesCreate.query(withObject: driveFile, uploadParameters: uploadParameters)
    
    // 4. 作成したクエリオブジェクトを指定して、execcuteQueryメソッドを実行します。
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let serviceDrive = appDelegate.googleDriveServiceDrive
    serviceDrive.executeQuery(query, completionHandler: { (ticket: GTLRServiceTicket?, updatedFile: Any?, error: Error?) -> Void in
        if let error = error {
            // 5. エラーの場合、処理を終了します。
            // 必要に応じてエラー処理を行ってください。
            return
        }

        // 正常終了の場合の処理を記述してください。
    })
}

目次へ

3. おわりに

他のストレージのファイルを作成するAPIに比べて、パラメータが少し多いです。
ただ処理としてはそんなに難しくないと思います。

個人や企業が主催する講座・教室・レッスン・ワークショップが10,000件以上 日本最大級のまなびのマーケット「ストアカ」

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ