Google Drive API로 업로드한 파일의 공개 범위 변경
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 그룹스에서 공개 범위를 설정하는 것도 가능합니다.
우선은 조사한 만큼 공유합니다.
계속한다.
Reference
이 문제에 관하여(Google Drive API로 업로드한 파일의 공개 범위 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/deltam/items/e13479ef36ac6729063e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)