質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1364閲覧

共有ドライブのスプレッドシートにアクセスする方法が分かりません

gureisu

総合スコア13

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/04/19 15:14

編集2020/04/22 14:32

JavaでGsuite共有ドライブのスプレッドシートに値を出力したいのですが、アクセスの仕方が分かりません。
apiは、GoogleSheetsApiとGoogleDriveApiを使用しており、マイドライブのスプレッドシートにアクセスして値を出力することはできます。また、共有ドライブ内にフォルダを作成し、googleCloudPlatForm・スプレッドシートの共有設定も済んでいます。
そこで以下についてお聞きしたいです。

①現在、サイトを参考に以下のコードで共有ドライブ内のファイルを読み込むか試しています。
共有ドライブ内のフォルダを認識することはできましたが、そこからどのようにそのフォルダ内のスプレッドシートにアクセスし、処理を渡すのか

②別の方法でアクセスする手段があるのか

したいことは共有ドライブにアクセスしてワークシートに値を書き込むだけです。
(eclipseで作成しているjavaのプログラムで、自動テストを実行し、該当のスプレッドシートにアクセスして処理結果を書き込むものです)
ご存知の方いらっしゃいましたら教えていただきたいです。

  (変更点)
・src/main/resourcesにJsonファイルを、プロジェクトディレクトリ配下にbuild.gradleをそれぞれ配置
・CREDENTIALS_FILE_PATHを、OAuth2.0クライアントID作成時のJSONファイル名に変更
・APPLICATION_NAMEは独自で設定したものを使用
・authorize()の引数部分には、実際にアクセスするgoogleアカウントを使用
・SCOPESには全てのファイルを対象とするように追加(https://www.googleapis.com/auth/drive)
・tokensフォルダ内のstoredCredentialはスコープを変更した時に削除

import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.drive.Drive; import com.google.api.services.drive.DriveScopes; import s.DriveQuickstart; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.Collections; import java.util.List; public class SharedDrive { private static final String APPLICATION_NAME = "Google Drive API Java Quickstart"; private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); private static final String TOKENS_DIRECTORY_PATH = "tokens"; /** * Global instance of the scopes required by this quickstart. * If modifying these scopes, delete your previously saved tokens/ folder. */ private static final List<String> SCOPES = Collections.singletonList(DriveScopes.DRIVE_METADATA_READONLY); private static final String CREDENTIALS_FILE_PATH = "/h.json"; /** * Creates an authorized Credential object. * @param HTTP_TRANSPORT The network HTTP Transport. * @return An authorized Credential object. * @throws IOException If the cc.json file cannot be found. */ private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException { // Load client secrets. InputStream in = DriveQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH); if (in == null) { throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); } GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH))) .setAccessType("offline") .build(); LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build(); return new AuthorizationCodeInstalledApp(flow, receiver).authorize("dummy@gmail.com"); } public static void main(String... args) throws IOException, GeneralSecurityException { // Build a new authorized API client service. final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT)) .setApplicationName(APPLICATION_NAME) .build(); service.teamdrives(); // Print the names and IDs for up to 10 files. DriveList result = service.drives().list() .execute(); List<com.google.api.services.drive.model.Drive> drives = result.getDrives(); if (drives == null || drives.isEmpty()) { System.out.println("No files found."); } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gureisu

2020/04/23 13:23

ありがとうございます。 参考にさせていただきます。
guest

回答2

0

自己解決

下記のコードを参考に、スプレッドシートIDからアクセスすることができました。
ありがとうございました!

Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT)) .setApplicationName(APPLICATION_NAME) .build(); ValueRange response = service.spreadsheets().values() .get(spreadsheetId, range) .execute();

投稿2020/04/23 13:53

gureisu

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下をみればできそうな気がするんですが私も初心者で、実際に作ってみたわけではないので、間違っているかも知れません。
なお、共有ドライブは「チームドライブ」で検索しました。

【GAS】Googleドライブ / チームドライブの特定フォルダ以下のファイル一覧を表示する方法

ドライブIDだけでなく、URLで見ることもできるみたいです。
Google Apps Script 実践メモ(スプレッドシート)

投稿2020/04/19 16:12

mike2mike4

総合スコア894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gureisu

2020/04/20 15:21

回答ありがとうございます。 GASですが、クラウド上からではなくeclipseで作成したJavaプログラムから、直接共有ドライブ内のスプレッドシートにアクセスするので厳しいかもしれません… 説明不足ですみません。
mike2mike4

2020/04/20 15:23

それはさすがにわかりません。Javaからスプレッドシートは使ったことないもので……
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問