問題タブ [importrange]
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.
date - 数式のシートへの参照としてセル値を使用する
3枚のスプレッドシートがあります。2つはと呼ばれ2012
、2011
同様のデータがたくさんあります。最後のシートは、データ間の比較を行います。
2011
年を選択できるようにするために、またはのいずれかを記述できるセル(D1)を使用しています2012
。次に、数式はINDIRECT関数を使用して、このセルを参照の一部として含めます。
これはきれいな解決策ではなく、式を非常に長く複雑にします。
これを行うためのより良い方法はありますか?
計算シート用に別のスプレッドシートを作成し、VMERGE(スクリプトギャラリーのカスタム関数)を使用して2つのシートのデータを1つのシートに一緒にインポート(インポート)しようとしましたが、これら2つのデータにはかなりの量がありますシートとインポートには長い時間がかかります。変更(年の変更など)も、再計算に長い時間がかかります。
google-sheets - Google スプレッドシートを Google スプレッドシートにインポートする
Google スプレッドシートのクエリを含む URL を別の Google スプレッドシートにインポートしようとしています。したがって、私の Web ページでは、次のような URL を使用します: https://docs.google.com/a/chiseledimages.com/spreadsheet/tq?tqx=out:html&tq=select%20C,D,E,F,G, H,I%20where%20%28A%20contains%20301%29&key=0AuOQkU9HTNwVdG5 を指定して、指定された Doc を参照するテーブルを作成し、列 A がクライアントの口座番号 (この場合は 301) と等しい特定の列を選択します。
私がやりたいことは、その URL からのデータを自動的に入力する別のスプレッドシートを用意することです。疲れました =importdata(" https://docs.google.com/a/chiseledimages.com/spreadsheet/tq?tqx=out:html&tq=select%20C,D,E,F,G,H,I%20where% 20%28A%20contains%20301%29&key=0AuOQkU9HTNwVdG5 ") しかし、それは HTML をインポートしただけで、シートにデータを入力していないように見えました。クライアントのすべてのデータを含む元のスプレッドシートに直接アクセスすることなく、クライアントが常にデータが自動入力される Google スプレッドシートを使用できるように、これを実行できるようにしたいと考えています。
google-apps-script - ドロップダウンリストのimportRange問題を解決するためのスクリプトの回避策
私はこれを、私が直面しているこの問題の解決策を回避することを期待して共有しています。ドロップダウンメニューの値を取得するためにデータ検証を使用しています。値は、「計算」と呼ばれるシートのRange(「A1:A40」)から取得されます</p>
同じドロップダウン値と同じパターンを使用するスプレッドシートが約50あるので、importRange関数を使用してSheet( "Calculation")。Range( "A1:A50")に情報を入力することにしました。importRangeは、その目的のために専用の別のスプレッドシートからリストを取得していました。
これを行う目的は、これが更新および変更するカテゴリのリストであり、50以上のスプレッドシートの値を手動で変更することなく、ドロップダウンメニューでこれらの変更を考慮に入れるためです。
理論的にはこれは問題なく機能しますが、importRange関数は非常に気まぐれであり、ランダムなスプレッドシートで発生する#REFエラーを示します。同じ問題からの不満のある投稿を見たので、importRangeが実行可能な解決策になることをあきらめました。
このような問題を回避するための適切な回避策について、ご意見をお聞かせください。
私が考えた解決策の1つは、あるシートからこれらすべてのシートに値をコピーするスクリプトを作成し、このスクリプトを毎日機能させることですが、あるスプレッドシートから別のスプレッドシートに範囲全体をコピーする方法がわかりませんでした。率直に言って、これかどうかはわかりません。ソリューションが最適です。
クロススプレッドシートスクリプトを使用した私の経験では、50枚以上のシートのいくつかのセルからデータを取得するスクリプトはおそらく5分以上かかり、最終的には許可された時間を超えて停止します。
datetime - 日時に問題がある
Googleスプレッドシートの日付と時刻にいくつか問題があります。私が持っているのは:
スプレッドシート1にはいくつかのシートがあり、そのうちの1つはと呼ばれSessions
ます。そのシートには、個々のトレーニングセッションに関するあらゆる種類のデータを示すいくつかの列があります。次に、ユーザーが表示できるGoogleサイトに公開されている2番目のスプレッドシートがあります。Sessions
最初のスプレッドシートのタブから情報を取得するために、QUERY+IMPORTRANGEによって入力されるシートが1つだけあります。これを行う理由は、ユーザーが最初のスプレッドシートのすべての異なるシートを表示したり、そこにあるすべての異なる列を表示したりしたくないためです。もう1つの理由もあります。クエリでセッションをフィルタリングして、すでに通過したセッションではなく、将来発生するセッションのみを表示するようにします。
データをプルするために2番目のシートにあるクエリは次のとおりです。
これで問題なく動作します。追加したいのは次のようなものです。
私は多くの異なる解決策を試しましたが、うまくいくものを見つけることができないようです。
わかりました....いくつかの開発を行いました。きれいではありませんが、別のシートを追加して、次のセルを作成すると、次のようになります。
次に、これをクエリで使用できます。
誰かが私がこれを一行で行うのを手伝ってくれるなら素晴らしいでしょう。以下に提案されているオプションを試しましたtoDate(Now())
が、上記の場合とは異なり、結果は返されません。
何かご意見は?
google-apps-script - トリガーされる機能と IMPORTRANGE
Google フォームで送信された情報と、IMPORTRANGE 関数を使用して Google スプレッドシートに取り込まれた情報を比較する Google Apps Script があります。手動で実行するとスクリプトは完全に機能しますが、フォーム送信トリガーから実行すると、IMPORTRANGE を使用してセルから正しい情報を取得していないと報告されます。
インポート範囲を強制的に更新するために追加できるクイック関数があるように、これを回避する方法はありますか?
すでに最大 10 分の待機時間を追加しようとしましたが、結果は変わりませんでした。
google-apps-script - GoogleスプレッドシートのImportRange関数を使用してセルの再計算を強制するにはどうすればよいですか?
ImportRangeを使用して別のスプレッドシートソースからデータを取得するスプレッドシートターゲットがあります。
select句は、B3の値に一致するデータをサブ選択することです。このセルの値が変更されると、インポートは「すぐに」更新されます。
誰かがソーススプレッドシートの何かを変更した場合に強制的に更新して、ターゲットに「すぐに」反映されるようにしたいと思います。現在、これは「不特定の時間の後」にのみ発生します。これは最大1分程度であり、私の目的には遅すぎます。
アップデート:
以下の回答とコメントに従って、編集トリガー*から呼び出される関数UpdateTargetをソースに追加しました。
これはより効果的に機能するようですが、このルートをたどる場合は、更新された値をターゲットに直接書き込むスクリプトを使用することもできます。
他のユーザーが複製でき、マスターソースから特定の「ライブ」データを抽出できるテンプレートをターゲットにしたかったので、新しいターゲットが追加されたときに維持する必要のあるスクリプトをソースに実装するのは気が進まない。
私が本当に必要としているのは、編集可能なセルに依存し、再計算をトリガーするように数式を言い換える方法だと思いますが、結果には影響しませんか?
(*余談ですが、openByID関数は、明示的なトリガーを介して呼び出されない限り、「アクションは許可されていません」という例外を返しました。onEditは他のスプレッドシートの編集を禁止されています。https: //developers.google.com/apps-script/understanding_triggersを参照してください。 )。
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
date - IMPORTRANGE 関数のシート名に INDIRECT 関数を使用する
Google スプレッドシートを使用して月次計画スプレッドシートからデータをインポートするリソース計画スプレッドシートを作成したいと考えています。月次計画スプレッドシートには、「2013 年 10 月」、「2013 年 11 月」などの名前のシートが 1 か月に 1 つあります。リソース計画スプレッドシートでは、Google スプレッドシートの IMPORTRANGE 関数を使用して常に現在の月をインポートしたいと考えています。
上記の式は、月次計画のシート名にも使用される形式で現在の月/年を示します。たとえば、「2013 年 10 月」などです。
ただし、 IMPORTRANGE 関数では#REF!
エラーが発生します。月次計画シートで直接テストした別のセルの内容を次のように呼び出すことができます。
ただし、したがって、 IMPORTRANGE 関数が INDIRECT 関数を好まないか、何か間違ったことをしています。