2017-06-27 12 views
1

ライブラリの管理と作成に関するすべてのGoogleドキュメントを読みましたが、解決しようとしている問題の適切なオプションかどうかはまだ分かりません。Google Appsスクリプトライブラリの使用

私はスタンドアロンスクリプトのバージョンを保存する方法を知っています。スクリプトエディタを使ってライブラリをスプレッドシートに追加する方法は分かっています。しかし、私は非常に単純に、新しいスプレッドシート内でライブラリスクリプトを起動する方法を理解していません。

私は組織内でよくコピーされたテンプレートとして機能するスプレッドシートを持っています。テンプレートには、(onOpen)が別のスプレッドシート(​​マスターデータベース)のデータにアクセスし、その値を「admin」というタブに設定するスクリプトが含まれています。必要な結果は、テンプレート・シート(およびテンプレート・シートの後続のコピー)内にマスター・データベースのコピーがあることです。この時点で、テンプレートシートのコピーは数千部あり、それぞれ同じスクリプトを実行しています。

スクリプトを変更する必要があるときはいつでも、何千枚もの内で変更する必要があります。代わりにライブラリを使用できますか?私はライブラリのスクリプトの新しいバージョンを作成し、そのライブラリに接続されているすべてのシートを変更したいと思っています。私は、これを行うにはライブラリが開発モード(各シート内)にある必要があることを理解しています。私はこの変更を行うために、おそらくライブラリを追加するために各シートに行く必要があることを理解しています。私はそのような退屈な仕事をしなければならない最後の時間になることを期待しています。

固体情報へのアドバイスやリンクがあれば幸いです。

+0

..私はこの会話に与えるために何かを持っていたし、私の言語は、これが私の最初の答えだった、適切であった希望は、ライブラリを使用するには、正当な理由のようですね。しかし、あなたはそのような答えのためだけにこの質問を投稿しましたか?私がこれから取り除くことができる唯一の質問は、あなたがライブラリを使うべきかどうかということです。 – Casper

+0

@casper "しかし、私は、非常に単純に、新しいスプレッドシート内のライブラリスクリプトを起動する方法を理解していません...確かな情報へのアドバイスやリンクは感謝しています。 - ありがとう! – MellyCopter

+0

[このページ](https://developers.google.com/apps-script/guides/libraries)の表は、共有リソースと非共有リソースの概要を示しています。トリガーが共有されていないので、ライブラリを組み込み、シートごとにトリガーを設定する必要があります。 – Casper

答えて

-1

良い質問メルリー。私は、このテーマに関するドキュメンテーションやチュートリアルをたくさん見てきましたが、まだライブラリを追加しようとしていません。私が理解しておけば、いったんライブラリに接続すれば、適切な関数を呼び出すだけで済みます。ライブラリが接続されると、ライブラリ内の関数は、スクリプトエディタで使用できる他のすべてのApps Scriptクラスの拡張になります。

2

アドオンの作成以外に(すでに別の回答に記載されています)、私はあなたの図書館の質問に答えます。彼らはあなたのために働くでしょう。あなたが欠けているのは、 "接続する"部分です。

これは、たとえばonOpenからライブラリコードをトリガーします。ライブラリ内のonOpenは十分ではなく、appsスクリプトによって検出されません。代わりに、各スプレッドシートのスクリプトには、yourLibrary.onOpen(e)を呼び出すonOpen(e)が必要です。

これらの「フック」コールはめったに変更されません。特にライブラリAPIを安定させると、「開発」モードで使用するとライブラリだけを変更できます。

これらのフックのうちの1つを変更する必要がある場合(たとえば、html GUIからのコールバックに新しいパラメータが必要な場合)、すべてのスプレッドシートを更新する必要があります。これを避けるには、すべてのコールバックに複数のパラメータではなく単一のjsonオブジェクトを受け取らせます。

申し訳
+0

ライブラリの新しいバージョンでは、各プロジェクトに入り、新しいバージョンを選択する必要はありませんか?そうであれば、退屈な作業の可能性を取り除くことはできません。 – Cooper

+0

いいえ、opのように、開発版を使用するように設定しています。 –

+0

クール。私は逃しました。 – Cooper

0

私は他の回答を繰り返していますが、私は総括と何かを追加したい場合:

次のようにあなたはあなたのライブラリ関数にアクセスすることができます。

アプリからあなたがに行くライブラリを使用してリソース/ライブラリ。ライブラリ名は "Identifier"の下に表示されます。開発モードを選択できる行と同じ行にあります。例えば

あなたが持っているあなたのライブラリーに今

Library name found in resources

あなたが例えば、リソースで見つかったライブラリ名を使用して、あなたがそれにアクセスしたい機能スプレッドシートアプリで

function onOpen(e) 
    { 
    Browser.msgBox("HELLO!"); 
    } 

「testlibrary」

function onOpen(e) 
{ 
    testlibrary.onOpen(e); 
} 

これで、開発モードがオンの場合、ライブラリ内の関数の変更が自動的にアプリケーションに更新されますn(スプレッドシート)アプリケーションを使用しているユーザーがライブラリスクリプトで編集アクセス権を持っている限り、

スプレッドシートを使用しているユーザーが、ライブラリスクリプトへのアクセスが制限されている(ビューアクセスのみを意味する)場合や、アプリケーションの開発選択がオフの場合は、アプリケーションのスクリプトリソース/ライブラリに移動し、ライブラリを更新して新しいバージョンを保存するたびに、アプリで使用するライブラリのバージョンを選択します。

でも、特にonOpen関数のみを使用している場合は、各スプレッドシートのスクリプトに関数をコピーして貼り付けるのではなく、ライブラリを使用することをお勧めします。スクリプト間のエラーや相違を避ける方が簡単です。

もっと制限されたケースでも、ライブラリ内の関数を更新する場合(既にアプリで呼び出している限り)、使用するライブラリの新しいバージョンを選択するだけです。

私は

+0

私はこのアップデートの機能をクライアントが自動的に選択するのを探しています。私のケースに入力してもらえますか? https://stackoverflow.com/questions/46136435/apps-script-library-automatic-updation-on-client-side-on-doc-refresh?noredirect=1#comment79235289_46136435 – user362953

関連する問題