Google Sheets API
を使おうとしています。問題は、Googleスプレッドシートでスクリプト機能を呼び出すと、次のエラーが発生します。
Sheets.SpreadSheets.Values.getへのAPI呼び出しエラーで失敗しました:要求に有効なAPIキーがありません。 (5行目)。
スクリプト内のline 5
は次のようになります。
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
そしてspreadsheetId
とrangeName
は1行目に定義されています。
私は私がAPIキーをどこでもコピーしなかったという問題があるかもしれませんが、私は本当にどこでそれをするか理解していません。
= function()
を使用して関数を呼び出します。
=myFunction()
muth_function__のようなカスタム関数によってシートAPIを使用すると、そのようなエラーが発生します。カスタム関数が実行されると、ScriptApp.getOAuthToken()
はnull
を返します。これが主にあなたの問題の理由であると思います。そして残念ながら、これが仕様であると思います。この問題を回避するために、私は2回の回避策を提案したいと思います。
スプレッドシートサービスの一部をカスタム関数で使用できます。これを使用して、var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
で同じ結果を取得します。スクリプトの場合、openById()
は使用できません。そのため、スクリプトは次のとおりです。
_function customFunc() {
var rangeName = "#####"; // Please set this.
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var values = sheet.getRange(rangeName).getValues();
return values;
}
_
Sheets APIを使用する場合は、アクセストークンが必要です。しかし、アクセストークンは自動的にAdvanced Googleサービスの内部で自動的に使用されるため、シートAPIの終点に直接要求する必要があります。この場合の問題として、カスタム関数でScriptApp.getOAuthToken()
が実行されると、null
が返されます。これを回避するために、方法として、アクセストークンはPropertiesServiceを使用してカスタム関数に直接与えられます。サンプルの流れは以下の通りです。
onOpenFunc()
にOnopenトリガをインストールしてください。これにより、シートAPIをカスタム関数で使用できます。
_// Please install OnOpen trigger to this function.
function onOpenFunc() {
PropertiesService.getScriptProperties().setProperty("accessToken", ScriptApp.getOAuthToken());
}
function customFunc() {
var spreadsheetId = "#####"; // Please set this.
var rangeName = "#####"; // Please set this.
var accessToken = PropertiesService.getScriptProperties().getProperty("accessToken");
var url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheetId + "/values/" + rangeName;
var res = UrlFetchApp.fetch(url, {headers: {"Authorization": "Bearer " + accessToken}});
var obj = JSON.parse(res.getContentText());
var values = obj.values;
return values;
}
_
これらの回避策があなたが望むものではなかったならば、私は謝罪します。