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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

835閲覧

スプレッドシートのセルの値が変化するときの合計の求め方

wakarimasen

総合スコア2

Google Apps Script

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/05/07 17:23

Google Apps Scriptでスプレッドシートの任意のセル(例えば1行3列目)が変化するとき、変化する前の値と変化した後の値を足す場合の処理はどのようにしたら良いのでしょうか?

(例:1行3列目のセルの値が35 →1行3列目のセルの値が44へ変化

合計は35+44=79

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

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

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

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

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

guest

回答2

0

ベストアンサー

シンプルなトリガーでoldValueをすると変更前の値は取れます。

GAS

1function onEdit(e){ 2 const oldval = e.oldValue; 3 const newval = e.value; 4 console.log(parseFloat(oldval)+parseFloat(newval)); 5}

このシンプルなトリガーは、コードを書けば自動的にシートの変更時に実行されます。

あと、ついでに
const row = e.range.getRow();
const col= e.range.getColumn();
で、その行と列が取得できます。

投稿2021/05/07 23:45

xail2222

総合スコア1497

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

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

wakarimasen

2021/05/08 08:45 編集

function myFunction99() { var shikenFile0 = SpreadsheetApp.openById("1l-gbxPr6ZO7jxFYtUaWR9OMZBQFvpeMQEl63BkUMKHs");//確認テスト var jibunFile0 = SpreadsheetApp.openById("1k4lm5Y2P5VnPutfRPWXlHRTtwtHxDdC8mBLet7-9DyQ");//スプレッドシート var Sheet0 = shikenFile0.getSheets()[0];//左端のシートを開く var Sheet1 = jibunFile0.getSheets()[0];//左端のシートを開く var data1 = Sheet0.getRange(1,3).getValue(); var data2 = Sheet1.getRange(1,1).setValue(data1); Logger.log(data1); var goukei=data1 Logger.log(data1); function onEdit(e){ const oldval = e.oldValue; const newval = e.value; Logger.log(parseFloat(oldval)+parseFloat(newval)); } Logger.log("今までの合計"+ goukei); こんな感じにやってみたのですが、スプレッドシートの値を変更させると合計が足されずに変更した値がそのまま合計になってしまいます。どうしたら良いか教えていただきたいです。
xail2222

2021/05/08 08:47 編集

myFunction99の中に入れるのではなくfunction onEdit(e)の関数を単独で追加することでシンプルなトリガーになります。 まぁ。そのままだと一番左のシートの1行3列目に限らず、どこを変更しても、そこの修正前と修正後の値を足す形になりますけどね。
wakarimasen

2021/05/08 09:29 編集

myFunction99でトリガーを設定したいのですが、function onEdit(e)の関数を単独で追加しない方法でもできますか?
xail2222

2021/05/08 10:09

ん~、onEdit(e)を追加しないでだと分からないですね。 onEdit(e)を追加して、その中で何処かのシートに保存しておいて後でそれを利用するとかじゃ駄目なのですか?
wakarimasen

2021/05/08 17:02 編集

わかりました。ありがとうございます。
guest

0

同じシート内ではできなかったはずです.
タイムスタンプとともにシートを複製し,
=sum("35のシート名"!C1, "44の新シート名"!C1...)
と,値が変更するタイミングでシートを追加していくことで達成は可能です.
GoogleAppScript推奨です.

なお,
余談になり直接的な回答ができず恐縮ですが,
例えばExcelなどで同じ達成実例をご覧になられていた場合,その方法や関数を調べることで,多くのGoogleSheetsの問題は解決されます.

投稿2021/05/07 22:16

Por

総合スコア40

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

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

wakarimasen

2021/05/08 09:32 編集

function myFunction99() { var shikenFile0 = SpreadsheetApp.openById("1l-gbxPr6ZO7jxFYtUaWR9OMZBQFvpeMQEl63BkUMKHs");//確認テスト var jibunFile0 = SpreadsheetApp.openById("1k4lm5Y2P5VnPutfRPWXlHRTtwtHxDdC8mBLet7-9DyQ");//スプレッドシート var Sheet0 = shikenFile0.getSheets()[0];//左端のシートを開く var Sheet1 = jibunFile0.getSheets()[0];//左端のシートを開く var data1 = Sheet0.getRange(1,3).getValue(); var data2 = Sheet1.getRange(1,1).setValue(data1); Logger.log(data1); var goukei=0; Logger.log(data1); goukei=goukei+data1; Logger.log("今までの合計"+ goukei); シートを複製してやってみたのですが、値を変更すると合計が足されずに変更した値になってしまいます。どのようにしたら良いか教えていただきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問