質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2740閲覧

GASで指定した範囲の値を取得して特定のセルに足し算していく。

rabu

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/11/21 08:21

編集2020/11/21 08:25

前提・実現したいこと

指定したセルの値を取得して、特定のセルに入れる。そして指定したセルの値を変更しても前にいれた値と後から入れた値を合算し続ける。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); sh.getRange(10, 2,10,5).copyTo(sh.getRange(9, 2)); sh.getRange(11, 2,11,5).getValues();//この数値を取得 (2,2,2,5)//取得した数値をこの範囲にスクリプトが起動するたびに足し算しつづける。ここの書き方がわからないです sh.getRange(10,2,10,5).clearContent(); sh.getRange(11,2,11,5).clearContent(); }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

javascript

1const onEdit = (e) => { 2 const watchSheetName = "シート1"; 3 const watchCell = "B11"; 4 const sumCell = "B2"; 5 if(!e.value && Number.isNaN(Number(e.value))) return; 6 const curRange = e.range; 7 const curSheet = curRange.getSheet(); 8 if(curSheet !== watchSheetName) return; 9 if(curRange.getA1Notation() !== watchCell) return; 10 const targetCell = curSheet.getRange(sumCell); 11 targetCell.setValue(Number(targetCell.getValue()) + Number(e.value)); 12}

前提

  • (2,2,2,5)//取得した数値をこの範囲にスクリプトが起動するたびに足し算しつづける。ここの書き方がわからないです

について "この範囲にスクリプトが起動する" は意味不明であり、getRange(2,2,2,5) は B2:F3 の 10セルを表現するので、足し算のやりかたとしても解釈困難なので

  • どこか適当なシート(仮に"シート1")で、シート内の入力用のセル(仮に"B11")に入力が起こるたびに、シート内の加算用セル(仮に"B2")に加算しつづける

という意味だと理解しました。
これにあわせて getRange(10, 2,10,5) (=B10:F19)や getRange(11,2,11,5) (=B11:F21) のような範囲も、B10 や B11 のような個別のセルを意味するものと理解しました。
もしかしたら列の方向に足し算したいのかなとも思いましたが、B10:F19 と B11:F21 では範囲がかさなっており、また範囲の大きさも異なるため、どこをどう足すのか合理的な推測が困難でした。

投稿2020/11/21 15:01

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rabu

2020/11/21 15:16

https://d.kuku.lu/28a4d275f2 これの増加値をドロップ数のところに累積させていきたい感じです。 1時間ごとのドロップ平均値をとりたいのです。1時間目100個、二時間目50個だったら150、3時間目50個で200………みたいな また()のなかの(2,11)などは個別のセル番地B:11を表しています。
papinianus

2020/11/21 16:51

やりたいことの共有ありがとうございます。画像はteratailでも添付できますし、質問も編集できます。 B11をB2に足すコードは書いていますので、同じことをCからEについてもやればいいとおもいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問