問題タブ [google-sheets-formula]

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 投票する
3 に答える
9612 参照

google-apps-script - GoogleスプレッドシートのImportRange関数を使用してセルの再計算を強制するにはどうすればよいですか?

ImportRangeを使用して別のスプレッドシートソースからデータを取得するスプレッドシートターゲットがあります。

select句は、B3の値に一致するデータをサブ選択することです。このセルの値が変更されると、インポートは「すぐに」更新されます。

誰かがソーススプレッドシートの何かを変更した場合に強制的に更新して、ターゲットに「すぐに」反映されるようにしたいと思います。現在、これは「不特定の時間の後」にのみ発生します。これは最大1分程度であり、私の目的には遅すぎます。

アップデート:

以下の回答とコメントに従って、編集トリガー*から呼び出される関数UpdateTargetをソースに追加しました。

これはより効果的に機能するようですが、このルートをたどる場合は、更新された値をターゲットに直接書き込むスクリプトを使用することもできます。

他のユーザーが複製でき、マスターソースから特定の「ライブ」データを抽出できるテンプレートをターゲットにしたかったので、新しいターゲットが追加されたときに維持する必要のあるスクリプトをソースに実装するのは気が進まない。

私が本当に必要としているのは、編集可能なセルに依存し、再計算をトリガーするように数式を言い換える方法だと思いますが、結果には影響しませんか?

(*余談ですが、openByID関​​数は、明示的なトリガーを介して呼び出されない限り、「アクションは許可されていません」という例外を返しました。onEditは他のスプレッドシートの編集を禁止されています。https: //developers.google.com/apps-script/understanding_triggersを参照してください。 )。

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

google-sheets - 複素数配列の合計

列のタイトルとその隣の列の値に基づいて、列の数値を合計したいと思います。たとえば、次の表に番号を追加したいと思います。

私のテーブル

ここで、列のタイトルは2011-2であり、その隣の列(S2011-2)には。が含まれていますa。この結果は3.18になるはずです。

0 投票する
0 に答える
576 参照

google-apps-script - apps-script: スプレッドシートの読み込み時に競合状態が発生し、データが正しくない?

アプリ スクリプト Web アプリで興味深い問題が発生しました。起動時とハンドラーで、コードはスプレッドシート A から小さな範囲のデータ (約 20 個の値) を取得しgetRangeByNameます。スプレッドシート A は複雑ではありませんが、4 ページあり、そのうちの 2 ページはスプレッドシート B から読み込まれます ( を使用importRange)。これらの 2 つのページにはそれぞれ 1 つの がロードされ、ImportRangeそれぞれ約 6000 のセルが読み込まれます。

これが問題です。ユーザーが Web アプリの URL をクリックすると、多くの場合 (試行の 25% 程度)、読み込まれたデータgetRangeByNameが正しくありません。返されるデータは#VALUE!、実際のスプレッドシート データではありません。返されるはずだった実際のデータは、リンクされた ( importRange) スプレッドシートから派生したテキスト (個人の名前) です。

これは通常、起動時に発生しますが (の場合doGet)、ユーザーがボタンをクリックした後に発生することもありました。

getRangeByNameスプレッドシートが を介してデータの読み込みを完了する前に が戻るように見えますimportRange。これは実際には大きな問題ではありません。特定のセルが既知の正しい値になるまで、getRangeByNameスクリプトを でループするようにスクリプトを変更しただけです。sleep限られたテストの後、修正は機能しているようです。しかし、これはかなりアマチュアのようです。他の誰かがこれを見たことがありますか?これは既知の問題ですか?これを処理する「適切な」方法はありますか?

最初の編集

スリープ/再読み取りの修正が機能しなかったため、以下のコードを追加しました。openByIdスプレッドシートを開くプレーンの代わりにこれを呼び出します。このコードには、最初は 2 番目のflush呼び出しのみが含まれていました。このコードは、2 回目のスローで失敗することがありますが、これは不可能に見えます。ここで何が起こっているかというと、GAS は (最終的に) for ループ内で正しいスプレッドシート データを取得し、for ループを終了してまったく同じデータをフェッチしようとしますが、データが正しくないということです。

2回目の編集

getRangeByNameコメントで示唆されているように、への最初の呼び出しの前に、以下のコードに 2 番目のフラッシュ操作を追加しました。変わりはない; コードは、(ハンドラー内で) への 3 回目の呼び出しで(再び2 回目のスローで) 失敗しました。InputSpreadsheetOpen

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

google-sheets - 予測式が必要

図に示すように、列 A - 日付、列 B (2012 年の特定の日付でのキーワードの使用) と列 C (2013 の特定の日付でのキーワードの使用) にいくつかのデータを含むこのスプレッドシートがあります。

例

私が望むのは、このデータに基づいて将来の日付 (この場合は 2 月 22 日 (C5)) の値を「予測」する FORECAST のような関数です。

式を教えてください。

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

google-sheets - 複数の列からの単語の出現をカウントします

私はこのようなスプレッドシートを持っています。ここで、値AEはフォームからの同じオプションです。

各オプションで最も選択されたオプションを表示して、ランキングを作成したいと思います。私はすでにこれを持っています、ここでランクはオプションのランキングであり、数はオプションのカウントです:

ここで、3つのオプションの要約を作成し、同じランキングを作成しますが、オプションに参加します。次のようになります。

これを行う最も簡単な方法は、3つのランキングテーブルまたは元の3つのデータ列からデータを取得することです。

そして、私はこれをどのように行うでしょうか?

オプションの名前、カウント、ランキングを取得する式はすでにありますが、複数の列で機能させる方法がわかりません。

私が持っているもの(F列はデータ列の1つです):

別のシートの列B:

列C:

列A:

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

google-sheets - クイズを採点するにはどうすればよいですか?

次のようなスプレッドシートにデータがあるとします。

ご覧のとおり、ボブは3つの質問を正解しましたが、アリスは2つの質問を正解しました。

スプレッドシートにこれを計算させるために、XXXとYYYの場所にどのような数式を入れることができますか?

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

google-sheets - 別の列の値が同じである現在のセルまでセルを合計する

別の列の値が同じである現在のセルまで、列のすべての値を合計する必要があります。

例:

最初の列には文字列、2 番目の数値、最初の列には結果が含まれます。

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

arrays - Google スプレッドシート配列の追加

Google スプレッドシートに配列を追加すると、結果のすべての要素がセルに表示されません。たとえば、次の式を入力するとします。

スプレッドシートのセルに表示される値は 1、4、5、6 です。なぜこれが起こっているのか、または代替案についてのアイデアはありますか? 私のより広い問題は、別のシートから別のシートに行を蓄積することです-私はそれを介してそれを行うことができます

しかし、同じ問題が明らかです (最初の配列から 2 番目以降の要素が欠落しています)。

0 投票する
9 に答える
40605 参照

google-apps-script - セルに格納されている数式を評価する方法はありますか?

=EVAL(A1)Google ドキュメントのスプレッドシートで、 A1 が に設定されている場所のようなものを探してい"=1+2"ます。

私は、MS Excel にEVALUATE()関数があることを知りました (これを適切に使用するのは少し難しいようです)。しかし、Google ドキュメントで同様のものを見つけることができませんでした。

関数リストも検索しましたが、役立つものは見つかりませんでした...