問題: スクリプトを実行すると、Google から次のように表示されます。
openById を呼び出す権限がありません
別の Google スプレッドシートからスクリプトをコピーし、target_ssKey変数のセル参照を変更し、ソース スプレッドシートとターゲット スプレッドシートの両方で適切なサイズの名前付き範囲を作成しました。
Google Apps Script のドキュメントには、動作しない理由については何も書かれていません。
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#openById%28String%29
別の Google Apps Script のドキュメントによると、カスタム メニューから呼び出すので、うまくいくはずです。
https://developers.google.com/apps-script/guides/sheets/functions#using_apps_script_services
上記の 2 番目のリンクには、次のように記載されています。
カスタム関数がエラー メッセージをスローする場合X サービスを呼び出す権限がありません。、サービスにはユーザー認証が必要なため、カスタム機能では使用できません。
上記以外のサービスを使用するには、カスタム関数を記述する代わりに、Apps Script 関数を実行するカスタム メニューを作成します。メニューからトリガーされる機能は、必要に応じてユーザーに承認を求めるため、すべての Apps Script サービスを使用できます。
関数を「カスタム関数」プロジェクトに入れ、次に「アドオン」プロジェクトに入れようとしましたが、それでも同じエラー メッセージが表示されます。
私が間違っていることと、これを機能させる方法についてのアイデアはありますか?
これが私の正確なコードです:
function exportData_SStoSS() {
// Get the source data.
var source_ss = SpreadsheetApp.getActiveSpreadsheet();
var data = source_ss.getRangeByName("exportData").getValues();
// Identify the target.
var controls_sh = source_ss.getSheetByName("Controls");
var target_ssKey = controls_sh.getRange('C2').getValue();
var target_ss = SpreadsheetApp.openById(target_ssKey);
// Paste the data to the target.
target_ss.getRangeByName("importData").setValues(data);
};