私は1日1列で設定されたモデルをGoogleシートに用意しています。これには実績と予測の両方が含まれており、毎日予測を実績に置き換えるために前倒しする必要があります。私は列全体をロールバックすることはできません。その列の一部分だけをロールバックすることはできません(上と下の参照番号が変更されるべきではありません)。Google Apps Script:数式に基づいて貼り付け範囲をコピーする方法
私は毎日これを行うためのスクリプトを書こうとしましたが、getRange
のダイナミックレンジの参照方法を知りません。
function rollColumn() {
var ss2 = SpreadsheetApp.openById('<ID redacted>');
ss2.getRange("=index(Model!$7:$7,,match(today()-2,Model!$4:$4,0)):index(Model!$168:$168,,match(today()-2,Model!$4:$4,0))").copyTo(ss2.getRange("=index(Model!$7:$7,,match(today()-1,Model!$4:$4,0)):index(Model!$168:$168,,match(today()-1,Model!$4:$4,0))"))
};
彼らは、関連する範囲を参照するようINDEX
式は限り仕事(私はスプレッドシートでそれらをテストしている):これは私の試みです。しかし、明らかにgetRange
は入力として式を受け入れません。また、Googleスプレッドシートでは名前付き範囲を数式で作成することはできないようです(これはExcelでこれを解決する方法です)。
GASを使用してこの機能を再現するのに役立つ人はいますか?
これは私がスタックオーバーフローで見つけた最も近い既存の質問ですが、私はそれを動作させることができていない: Google Apps Script performing Index & Match function between two separate Google Sheets
ありがとうございました!
それはあなたがログを使用して試してみましたかあなたはJavaScriptを知っているだけの場合は不明です。現在、コードの主な問題は、スクリプトでGoogleスプレッドシートの数式を使用しようとしていることです。ただし、GoogleスプレッドシートはGoogleスプレッドシートでのみ作成できます。インデックスに一致するサンプルのGoogleシートへのリンクを送信してください。それから、その振る舞いを再現するコードを提供します。 –
あなたの素早い返信のためにアントワーヌありがとうございます。ここには簡単なサンプルシートがあります:https://docs.google.com/spreadsheets/d/1BU2rhAZGOLYgzgSAdEz4fJkxEcPRpwl_TZ1SR5F0y08/edit?usp=sharing 重要な点は、前日のデータが入ったら、この場合はコピーする必要があります'M4:M6'を' N4:N6'に変換する 黄色で今日の日付に基づいてその範囲に到達する方法を示していますが、スクリプトの解決策はかなり異なってくる可能性があります。ありがとう再び! –
リンクありがとうございますが、私は数式を見ることができません。共有設定を[ウェブ上の公開](https://support.google.com/drive/answer/2494822?co=GENIE.Platform%3DDesktop&hl=ja)に変更できますか?あなたの質問を見る人は誰でもそれを見ることができるのですか? –