4

SpreadsheetAppには、SpreadsheetAppを使用してシートを作成するためのスプレッドシートが作成されています。ただし、GoogleシートREST APIからのみアクセス可能な、シート上のフィルタの取得/設定などの機能があります。同じシートのApps Script内からGoogle Sheets APIを使用する

私は、Apps Script内でUrlFetchAppを使用してGoogle Sheet APIを呼び出す例を見てきましたが、Apps Scriptが実際に特定のスプレッドシートにバインドされていないかのように書かれています。

function getSheetBasicFilter(ssId, sheetId) { 
    var params = { 
    headers: { 
     "Authorization": "Bearer " + ScriptApp.getOAuthToken() 
    } 
    }; 
    var base = "https://sheets.googleapis.com/v4/spreadsheets/"; 
    var partialRespParams = "?fields=sheets%2FbasicFilter"; 
    var resp = UrlFetchApp.fetch(base + ssId + partialRespParams, params); 
    var sheets = JSON.parse(resp.getContentText()).sheets; 
    for (var i = 0; i < sheets.length; i++) { 
    if (sheets[i].basicFilter 
     && (sheets[i].basicFilter.range.sheetId == sheetId 
      || (!sheets[i].basicFilter.range.sheetId && sheetId == 0))) { 
     return sheets[i].basicFilter; 
    } 
    } 
    return null; 
} 

私はAppsスクリプトバウンドスプレッドシート内からこの関数を呼び出すしようとすると、私はエラー「要求が不十分な認証のスコープを持っていた」取得します。

ドキュメントを所有するユーザーとしてスクリプトが実行されていて、ScriptApp.getOAuthToken()が使用されているため、このエラーが発生する理由は不明です。

ご協力いただければ幸いです。

答えて

0

まず、Developers ConsoleでのシートAPIを有効にしてください。

エラー「Request had insufficient authentication scopes」は、要求に含まれるOAuth 2.0トークンのエラーで、要求されたデータにアクセスするには不十分な範囲を指定しています。

正しく、必要なものをすべて使用してください(scopes)。ここに記載されている手順を正しく実行する場合は、Authorizing requests with OAuth 2.0にチェックを入れてください。

また、アクセスを取り消してやり直してみることもできます。

は、詳細については、ScriptApp.getOAuthToken()のマニュアルを確認し、このthread

+0

は、ご返信いただきありがとうございます。この質問を提出する前に、あなたがしたすべてのアドバイスを調べました。 「すべての必要なスコープ」の使用に関して、Appsスクリプト内からGoogleシートAPIにアクセスするために必要なスコープを指定する方法はありません。受動的に参照するスレッドは「DriveApp」を使用します.Apple Scriptには必要なスコープが暗黙的に追加されます(これはAppsスクリプトのプロパティダイアログに表示されます)。これはGoogleスプレッドシートAPIでどのように行われますか? – user2672083

+0

muteHttpExceptionsオプションを使用して完全な応答を調べようとしましたか?多分この問題はスコープに関するものではありません。 UrlFetchAppの使用方法については、この[link](https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app)をご確認ください。 – KENdi

+0

はい、それも試みました。 '完全な'生テキスト応答は{"error":{"code":403、 "message": "要求には認証スコープが不十分です"、 "status": "PERMISSION_DENIED"}} – user2672083

関連する問題