問題タブ [google-sheets-custom-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
352 参照

google-apps-script - プログラムでカスタム関数を追加する方法は?

かなりユニークな Google シート アドオンを作成しようとしています。Google のドキュメントはカスタム関数を追加するのに最適ですが、アドオンにカスタム関数をプログラムで追加してもらいたいです。

たとえば、次のことはできないようです。

  • getScript()カスタム関数があると仮定するとgetScript("scraper")、このカスタム関数は HTTP 呼び出しを実行scraper()し、Google シートに新しい関数をインストールします。
  • 次にscraper("https://www.google.com")、「google.com」からすべてのテキストを取得できます。

scraper()事前に定義できることを知っています。

ライブでそれを行うことは可能ですか?

0 投票する
1 に答える
7247 参照

google-apps-script - カスタム関数の実行時の「参照が存在しません」エラー

Google Apps Script で関数を作成していますが、回避する必要がある最後のエラーは、関数を呼び出したときの Google スプレッドシートの「参照が存在しません」というエラーです。私のコードの問題ではないように見えるので、これについて何をすべきかわかりません。

これが私のコードの外観です。ユーザー入力用に変更する必要があるため完全ではありませんが、これはテストです。

Googleシートのセルに入力します=sortingtesting()

解決策が見つかりました: これは、Google シートからパラメーターとして取り込まれる配列を使用した私の作業コードであり、作業プロトタイプをそこに置くといいと思いました:

0 投票する
5 に答える
35751 参照

google-apps-script - openById を呼び出す権限がありません

問題: スクリプトを実行すると、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 サービスを使用できます。

関数を「カスタム関数」プロジェクトに入れ、次に「アドオン」プロジェクトに入れようとしましたが、それでも同じエラー メッセージが表示されます。

私が間違っていることと、これを機能させる方法についてのアイデアはありますか?

これが私の正確なコードです:

0 投票する
1 に答える
1398 参照

javascript - Google スプレッドシートのカスタム関数でセルを反復処理する

Google スプレッドシートでカスタム関数を構築しようとしていますが、これは基本的にこれを行います: - func() というカスタム関数がセル D2 に配置され、=func(B2) として呼び出されるとします - 特定のセル参照 (B2 など) を開始点として、列の B2 に続くすべてのフィールド (つまり、B3、B4、B5) を反復処理しますが、これらのフィールドの値は特定の記号 (パイプ | など) に等しくなります。- この条件が成功する (つまり、B3 == '|') 反復ごとに、配置されたセルの値を列の下に追加/集計できます。したがって、セル B3、B4、B5 に | が含まれているとします。B6 は D3+D4+D5 の値を返しません。

たとえば、このスプレッドシートの場合:

ここに画像の説明を入力

セル B10 では、関数は値 8 (1+3+4) を生成し、セル B15 では関数は値 11 (5+6) を生成する必要があります。

私はこのようなものを思いついた:

本当に2か所で立ち往生しました:

  1. 関数はデバッガーで動作しているように見えますが、スプレッドシートから呼び出すと、そのような範囲が存在しないと言って getRange() 関数呼び出しで失敗します。getRange('A2') などの静的呼び出しに置き換えると、その部分は機能しますが、getCell() で index out of range と言って失敗します。

  2. 関数自体が配置されている場所から列の次のセルの値を実際に取得するにはどうすればよいですか?

これら2つについて本当にかなり迷っており、アドバイスをいただければ幸いです。ありがとうございました!

0 投票する
2 に答える
158 参照

google-apps-script - Google Apps Script を使用せずに Google スプレッドシートでカスタム関数を作成できますか?

Google Apps Script で Google スプレッドシートを使用しています。

しかし、それはあまりにも簡単にエラーメッセージを表示します。このような

エラー
スクリプトは、この Google ユーザー アカウントに対して 1 秒間に呼び出される回数が多すぎます。(行 0)。

エラーを回避する方法はありますか?(関数呼び出しを減らす方法を除く)またはJavascript関数定義をサポートする代替スプレッドシートプログラム?

0 投票する
1 に答える
5130 参照

google-apps-script - Google スクリプトの setValue

GoogleスクリプトでGoogleスプレッドシートのセルを操作する方法を学ぼうとしています。私は学んだ、それ

カスタム関数は値を返しますが、セルの外に値を設定することはできません。ほとんどの場合、セル A1 のカスタム関数はセル A5 を変更できません。ただし、カスタム関数が double 配列を返す場合、結果は関数を含むセルをオーバーフローし、カスタム関数を含むセルの下および右のセルを埋めます。return [[1,2],[3,4]]; を含むカスタム関数でこれをテストできます。

だから私はセルC14で関数を呼び出しています

それでもエラーが発生する

setValue を呼び出す権限がありません

関数を呼び出しているセルにデータを設定することさえできません。

なぜこれが機能しないのか誰にもわかりませんか?


編集:

重複の可能性を読みました カスタム関数で setValue を使用できないのはなぜですか?

しかし、これは私の問題を解決していません。

他のセルを編集したくありません数式を含む元のセルのみを編集したい。引用されたテキストによると、数式を含む元のセルであれば、セルを編集できるはずです。しかし、私の例は、自分自身にしかアクセスしていないにもかかわらず、エラーを返しています。

0 投票する
2 に答える
575 参照

google-apps-script - セルをクリアして Google シート名を取得する

最初の 4 つを除くすべてのシートの固定セルをクリアし、まったく同じセルにシート名を入力するスクリプトを作成したいと考えています。

これまでのところ、セルを空白にして、シート名を取得する新しい関数で埋めるスクリプトがあります。最初のスクリプトは、スプレッドシートを開くときにトリガーされます。ただし、読み込み中… と表示されるだけで、シート名は取得されません。

私の現在の(動作していないスクリプト):

素晴らしいアイデアはありますか?ありがとう