問題タブ [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.
google-apps-script - カスタム関数が「setValue に必要な権限がありません」というエラーをスローする
Google スプレッドシートのセルに値を設定しようとしています:
この関数でセルに影響を与えようとすると、次のエラーが表示されます。
setValue に必要な権限がありません。(10行目、ファイル「ddd」)
どうすればそれが可能になるか知っていますか?実際には、影響を受けるセルがセル A1 の値を取得し、A1 の値を 1 増やします。
google-apps-script - Google スプレッドシートのカスタム関数によって取得されたデータを更新します
id
Web サービス (価格) から情報を受け取り、取得するカスタム Google Apps スクリプトを作成しました。
このスクリプトをスプレッドシートで使用していますが、問題なく動作します。私の問題は、これらの価格が変更され、スプレッドシートが更新されないことです。
スクリプトを強制的に再実行してセルを更新するにはどうすればよいですか (手動で各セルを調べずに)。
google-apps-script - 組み込みのスプレッドシート関数で作成された Google スプレッドシート カスタム関数
私はセルに次の機能を持っています。他のセルから日付を読み取り、年齢を計算して「3 週間 5 日」の形式に変換します
できます。
ここで、この長い文字列を 1 つの単純な関数に置き換えたいと思います。
どうやってやるの?
私はすでにスクリプトエディタでこのスクリプトを書き込もうとしました
しかし、それはエラーを返します
エラー: setFormula を呼び出す権限がありません (3 行目、ファイル「コード」)
前もって感謝します!
よろしく、トマズ
javascript - Google スプレッドシートのカスタム関数 - スプレッドシートから渡された配列の処理
Google スプレッドシートで動作する簡単なスクリプトを作成しようとしています。スプレッドシートは Google フォームから入力を取得するため、スプレッドシートには次のような一連の値があります。
私の目標は、ユーザーが指定した範囲内の各フォーム入力から数値を取り除き、すべての数値を追加して単一のスコアを提供するスクリプトを作成することです。したがって、たとえば、ユーザーが=sumColumns(H2:K2)
セルに入力すると、スコアの合計が返されます (私が投稿したサンプル スクリーンショットでは、 , の結果が返され3+3+0+3
ます9
)。
これを行うために私が書いたコードは次のとおりです。
問題は、2 つの値を加算しているようにしか見えないことです。そのため=sumColumns(H2:K2)
、スプレッドシートにセルを入力すると、 のみが返されます6
。また、3 行目で から に変更すると、i <= values.length
数字i < values.length
が 1 つしか追加されないため3
、結果として得られます。Google スプレッドシートの値が関数に渡される方法を誤解していると思いますが、完全に機能させることができませんでした。助けていただければ幸いです。
google-apps-script - カスタム関数で setValue を使用できないのはなぜですか?
私は本当に興味がありますが、 setValue を使用してカスタム関数の別のセルに書き込むことができない理由を知っている人はいますか?
readme では、これを行うことはできないと説明されていますが、その理由については説明されていません: リンク
カスタム関数は値を返しますが、セルの外に値を設定することはできません。ほとんどの場合、セル A1 のカスタム関数はセル A5 を変更できません。ただし、カスタム関数が double 配列を返す場合、結果は関数を含むセルをオーバーフローし、カスタム関数を含むセルの下および右のセルを埋めます。return [[1,2],[3,4]]; を含むカスタム関数でこれをテストできます。
これに正当な理由があるかどうか、誰でも知っていますか?
google-apps-script - セル内の数式でシート名を取得
ワークブックに 2 つのシートがあります。
sheet1
アドレスで cell_1にsheet1!A1
データを保存します。sheet2
アドレスによる cell_2にsheet2!A1
は、式があり=sheet1!A1
ます。
したがって、cell_2 の値は常に cell_1 の値を反映します。また、cell_1 をドラッグするsheet1
か名前を変更すると、cell_2 の数式が動的に変化しsheet1
ます (たとえば、「=sheet1!A1」は「=newSheetName!B2」に変換されます)。
cell_2 の数式から、cell_1 の「シート名」「列の N」と「行の N」を取得できません。COLUMN(cell_1) で取得した列の N と、行 (cell_1) で取得した行の N です。シート名を取得するために、マクロを試しました:
その後、cell_3 数式を設定する=getSheetName(link_to_cell_1)
と機能しましたが、このメソッドの名前を変更するsheet1
と、cell_3 の値が更新されません。getSheetName
1分に最大1回のトリガーで機能を開始した場合にのみ、正しく機能します。
cell_2 の数式から cell_3 のシート名を「その場で」取得するにはどうすればよいですか?
google-apps-script - Google Apps Script カスタム関数からのセル数式の読み取りと書き込み
セルの内容を他のセルにコピーする GAS スプレッドシート カスタム関数を作成しようとしています。そして、ターゲット セルにソース セルのデータだけでなく、数式の内容 (存在する場合) を入力する必要があります。
カスタム関数はセル計算の結果を常に受け取りますが、セルの数式自体は受け取りません。また、ターゲット セルの数式を返すこともできないためです。
一方、セルの数式を読み書きする機能があります。たとえばRange.getFormula()
、 Range.setFormula()
私の努力を可能にしているようです。私は単にそれらを呼び出す別の方法を見つけなければなりません。更新: 一方、カスタム数式は実際にはを使用して数式を読み取ることができますが、を使用してセルに数式を書き込むgetFormula()
権限は絶対にありません。setFormula()
私の質問は...
セルの数式の内容を読み書きするカスタム関数に相当するものを作成する最も洗練された方法は何でしょうか? スプレッドシートを編集するたびにターゲット セルを更新する onEdit 関数を使用できると思いますが、それはターゲット セル範囲の座標をハード コードする必要があることを意味します。移動されます (たとえば、その上に行が挿入された場合)。
更新: 例
例として、セルの複数の範囲 (各範囲は個別の関数パラメーターとして指定) を読み取ることができ、結合されたセルの範囲を返すカスタム関数があります。
=rangeJoin(A1:B10;D1:E15)
...サイズ 2x10 と 2x15 の 2 つの範囲を読み取り、サイズ 2x25 のターゲット範囲を両方の範囲の後続のセル内容で埋めます。ターゲット範囲は、セルを含むセルから始まりrangeJoin
、右に 2 セル、下に 25 セルに広がります (通常のカスタム関数と同様)。カスタム関数 (または同様のメカニズム) は数式をコピーできる必要があるため、=hyperlink("http://www.google.com";"Google")
「Google」という裸の単語を含むテキスト セルとしてではなく、ハイパーリンクとしてターゲット範囲に表示される必要があります。
javascript - カスタム関数からメモを設定
次の問題に取り組んでいます
。株式市場への投資を追跡するためのスプレッドシートを持っています。外部サービスを呼び出して、現在の価格で CSV を取得します。そのため、アイテムの現在の価格を呼び出して返す
関数があります。現在の日時を含む、呼び出し元のセルにメモを追加したいと思います。このようなもの:customFunction()
UrlFetchApp
この関数をセル E21 (値=customFunction()
) から呼び出しています。そのため、メモを設定するはずの行を除いて、すべてが計画どおりに機能します。私は正しいセルを取得していると確信しています(A1notationを値として返すことでテストされています)。エラーが発生します:
その関数からカスタム関数を呼び出すセルにメモを設定できるかどうかは誰にもわかりませんか? または、関数が新しいデータでリロードする瞬間を捉え、それをトリガーとして使用するなど、回避策のアイデアをお持ちですか?