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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

9892閲覧

Google Drive APIでの エラー発生時の回避処理

ymzkt

総合スコア1

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/02/18 06:29

編集2021/02/18 06:31

前提・実現したいこと

大変初歩的な質問になるかもしれませんが、
GoogleAppScript のDrive APIを利用して、Googleドライブ内のファイルに対して
ファイル毎にユーザ個別への共有設定を追加する処理を作っております。

以下のコードの通り Permissions: insert にて通知をオフの設定で共有を追加するのですが、
「target_mail」で指定したメールアドレスのGoogleアカウントが誤入力などで存在しない場合、
GASの実行ログに以下のエラーが出力されるのみで 以降の処理が停止してしまいます。

数百件の繰り返し処理をするため、途中にエラーがあった場合は 回避して処理を継続させたいと考えているのですが、
可能かどうか、またどのようにすればよいかご教授いただけますと幸いです。

発生している問題・エラーメッセージ

エラー GoogleJsonResponseException: API call to drive.permissions.insert failed with error: Bad Request. User message: "〇〇〇@google.com" さんを招待しようとしています。このメールアドレスには Google アカウントが関連付けられていないので、この受信者を招待するには、[通知] チェックボックスをオンにする必要があります。"

該当のソースコード

Drive API

1 2var target_mail = "〇〇〇@google.com"; 3var fileId = "xxxxxxxxxxxxxxxxxxxxxxxx"; 4 5//実際は 別にあるリストを元に ファイルID、メールアドレスを変えて 繰り返し処理をする 6 7 Drive.Permissions.insert( 8 { 9 'role': 'reader', 10 'type': 'user', 11 'value': target_mail //メールアドレスで指定する 12 }, 13 fileId, //ドライブのファイルIDで対象を指定する 14 { 15 'sendNotificationEmails': 'false', //通知はオフにしたいのでfalse 16 'supportsAllDrives': 'true' //共有ドライブで利用するのでtrue 17 } 18 ); 19 20//繰り返し処理ここまで

試したこと

Drive API のファレンスを探したのですが、エラー時の処理分岐方法について情報を見つけることができませんでした。

補足情報(FW/ツールのバージョンなど)

https://developers.google.com/drive/api/v2/reference/permissions/insert

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

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

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

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

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

guest

回答1

0

ベストアンサー

普通に、try-catchでエラーを捕捉すればよいのでは?

JavaScript

1function myFunction() { 2 var mail = "ここにメールアドレス"; 3 var fileid = "ここにファイルのアドレス"; 4 5 //ファイルオーナー権限を移譲する 6 try{ 7 Drive.Permissions.insert( 8 { 9 'role': 'reader', //writerとすると編集者権限になります 10 'type': 'user', 11 'value': mail //valueにmailのメアドを入れる 12 }, 13 fileid, //ここにfileid変数のファイルのIDを入れる 14 { 15 'sendNotificationEmails': 'false', //trueとすると通知が飛んでしまいます 16 'supportsAllDrives': 'true' //共有ドライブサポートを有効化する 17 } 18 ); 19 }catch(e){ 20 console.log(e.message); 21 } 22}

サンプルファイル

参考リンク

投稿2021/02/18 14:44

officeforest

総合スコア412

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

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

ymzkt

2021/02/26 10:16

確認が遅くなり申し訳ございません、ご回答頂いた通り実現できました! try-catch の使い方を理解しておらず 大変勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問