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()が使用されているため、このエラーが発生する理由は不明です。
ご協力いただければ幸いです。
は、ご返信いただきありがとうございます。この質問を提出する前に、あなたがしたすべてのアドバイスを調べました。 「すべての必要なスコープ」の使用に関して、Appsスクリプト内からGoogleシートAPIにアクセスするために必要なスコープを指定する方法はありません。受動的に参照するスレッドは「DriveApp」を使用します.Apple Scriptには必要なスコープが暗黙的に追加されます(これはAppsスクリプトのプロパティダイアログに表示されます)。これはGoogleスプレッドシートAPIでどのように行われますか? – user2672083
muteHttpExceptionsオプションを使用して完全な応答を調べようとしましたか?多分この問題はスコープに関するものではありません。 UrlFetchAppの使用方法については、この[link](https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app)をご確認ください。 – KENdi
はい、それも試みました。 '完全な'生テキスト応答は{"error":{"code":403、 "message": "要求には認証スコープが不十分です"、 "status": "PERMISSION_DENIED"}} – user2672083