8

Googleスプレッドシートで作業する必要があります。他のスプレッドシートへのリンクが多数含まれているテンプレート スプレッドシートをいくつか使用しています。問題は、ほとんどのリンク (importrange 関数で作成されたもの) を使用するためにテンプレート スプレッドシートのコピーを作成するたびに、再度アクセスを許可する必要があることです。 ここに画像の説明を入力

私がやりたいのは、すべてのリンクを一度にインポートできるスクリプトを作成することです。アプリスクリプトを作成しようとしましたが、スクリプトを作成できるように「アクセスを許可」ボタンでテキストボックスにアクセスする方法が見つかりません。私の質問は次のとおりです。「アクセスを許可する」ボタンにプログラムでアクセスする方法はありますか? または、私の問題を解決し、すべてのリンクに一度にアクセスできるようにする他の方法はありますか?

4

5 に答える 5

4

私は同じ問題に直面しなければなりませんでした。このインポート範囲へのアクセスを許可することを回避する唯一の方法は、リンクされたドキュメント (インポート範囲の宛先) を公開するか、リンクによって共有されることです。その場合、importrange を許可する必要はありません。2 つのドキュメントが同じ所有者からのものである場合、Google はこの承認アクセスを避ける必要があります。ここでのセキュリティ違反がどこにあるのかわかりません。

于 2015-10-03T20:18:57.020 に答える
3

まあ、私がやったことは問題を本当に解決するわけではありませんが、大いに役立ちます. 必要なすべてのスプレッドシートの範囲を 3 番目のスプレッドシートにインポートしました。次に、その範囲をモデルにインポートしました。そのため、新しいファイルが作成されたときに、複数のスプレッドシートではなく 1 つのスプレッドシートへのアクセスのみを許可する必要があります。

私が言ったように、それは問題を解決しませんが、素晴らしい回避策です。

于 2015-06-10T19:55:50.650 に答える
1

いいえ、システムのセキュリティ違反になるため、プログラムで [アクセスを許可] ボタンにアクセスすることはできません。

アクセスを許可する最善の方法は、スプレッドシートの ID のリストを繰り返し処理し、次のように開くことだと思います。

var idList = [...]; // here are all the ids

for (var i = 0; i < idList.length; i++) {
    SpreadsheetApp.openById(idList[i]); // trying to open the spreadsheet by id
}

そうすれば、すべてのスプレッドシートに自動的にアクセスするためのスクリプトへのアクセスを許可するようにユーザーに求める必要があります。

次に、スプ​​レッドシート自体からではなく、スクリプトから範囲をインポートできるはずです。SpreadsheetクラスとSheetクラス、特にgetRange()メソッドを使用します。

于 2014-08-07T10:20:35.487 に答える