Google Drive API로 업로드한 파일의 공개 범위 변경

12444 단어 5googleapi
이 기사의 계속.

googleapi - CSV 다운로드를 만드는 데 지루했기 때문에 Google Drive API를 사용해 보았습니다. - Qiita

「기타」의 공개 범위를 변경하는 방법을 조사해 보았다.

우선 파일 업로드할 때 File 구조체의 Permissions 에 정보를 넣어 보았습니다. 업로드하자마자 공개 범위가 변경되면 흥미롭고 비공개인 채. 이 필드는 Read Only입니까?

다음에 일단 업로드를 끝내고 나서, 그 파일 ID에 대해서 공개 범위를 설정하는 요구를 던져 보았습니다.
그러면 OK, 제대로 공개 범위가 설정되어 있었습니다.



(Google Apps에서 사용하고 있고 같은 회사의 사람에게 공개하고 싶은 경우를 상정)

사용한 것은 이 코드. 전회와 같이 샘플 코드를 개조해 썼습니다.

gdrive_permission.go
package main

import (
    "code.google.com/p/goauth2/oauth"
    "fmt"
    "google.golang.org/api/drive/v2"
    "log"
    "net/http"
    "os"
)

// Settings for authorization.
var config = &oauth.Config{
    ClientId:     "YOUR_CLIENT_ID",
    ClientSecret: "YOUR_CLIENT_SECRET",
    Scope:        "https://www.googleapis.com/auth/drive",
    RedirectURL:  "urn:ietf:wg:oauth:2.0:oob",
    AuthURL:      "https://accounts.google.com/o/oauth2/auth",
    TokenURL:     "https://accounts.google.com/o/oauth2/token",
    TokenCache:   oauth.CacheFile("cache.json"),
}

// Uploads a file to Google Drive
func main() {
    t := &oauth.Transport{
        Config:    config,
        Transport: http.DefaultTransport,
    }

    // キャッシュがあったらブラウザ認証しない
    _, err := config.TokenCache.Token()
    if err != nil {
        // Generate a URL to visit for authorization.
        authUrl := config.AuthCodeURL("state")
        log.Printf("Go to the following link in your browser: %v\n", authUrl)

        // Read the code, and exchange it for a token.
        log.Printf("Enter verification code: ")
        var code string
        fmt.Scanln(&code)
        _, err := t.Exchange(code)
        if err != nil {
            log.Fatalf("An error occurred exchanging the code: %v\n", err)
        }
    }

    // Create a new authorized Drive client.
    svc, err := drive.New(t.Client())
    if err != nil {
        log.Fatalf("An error occurred creating Drive client: %v\n", err)
    }

    // Define the metadata for the file we are going to create.
    f := &drive.File{
        Title:       "My Document",
        Description: "My test document",
    }

    // Read the file data that we are going to upload.
    m, err := os.Open("document.txt")
    if err != nil {
        log.Fatalf("An error occurred reading the document: %v\n", err)
    }

    // Make the API request to upload metadata and file data.
    r, err := svc.Files.Insert(f).Media(m).Do()
    if err != nil {
        log.Fatalf("An error occurred uploading the document: %v\n", err)
    }
    log.Printf("Created: ID=%v, Title=%v\n", r.Id, r.Title)


    // 公開範囲変更のために追加したコード
    pm := &drive.Permission{
        Type:  "domain",
        Role:  "reader", // 閲覧者設定
        Value: "{GoogleAppsのドメイン}",
    }

    // SendNotificationEmails(false)にしないとスクリプト実行のたびにメールが飛んでしまう(?
    rpm, err := svc.Permissions.Insert(r.Id, pm).SendNotificationEmails(false).Do()
    if err != nil {
        log.Fatalf("Permission error : %v\n", err)
    }
    log.Printf("Permission: type:%v, role:%v\n", rpm.Type, rpm.Role)
}


위에서는 Role: "reader" 에서 열람자 권한을 인서트하고 있습니다만, wirter 로 바꾸면 공동 편집자가 됩니다. 그 밖에 anyone라든지 있습니다.
자세한 내용은 다음 공식 문서 참조.

Share Files   |  Drive REST API   |   Google Developers

Google 그룹스에서 공개 범위를 설정하는 것도 가능합니다.

우선은 조사한 만큼 공유합니다.

계속한다.

좋은 웹페이지 즐겨찾기