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

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

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

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

Q&A

解決済

2回答

1477閲覧

条件を満たしたら該当セルの値を1増やす操作?

yoichiyy

総合スコア55

Google Apps Script

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

0グッド

0クリップ

投稿2019/10/22 21:35

スプレッドシートのK1セルには現在 3 (数値)が入っています。
if文で、特定の条件を満たした場合、このセルの値を1増やして4にしたいです。

これをするべく、以下のようなコードを書いたのですが、

var x = sheet.getRange('k:k').getValues();  if(a == b){ var x = x[i] + 1; sheet.getRange(i,11).setValue(x);

上のコードでは省略しているのですが、
if文はfor loop内にあります。

i行目で条件が一致したため、
変数xの値を1増やそうとしています。

問題は、setValueの結果が 31になってしまうことです。
3 + 1 = 4 とならずに、
3 + 1 = 31 と、文字列の結合になってしまいます。

このような場合、どういうコードを書けばよいものでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

問題の原因

  • 31となってしまう問題は、1次元配列から直接値を使用しようとしていることにあると思われます。getValues()で取得した値は2次元配列のため、x[i] + 1x[i][0] + 1に変更すると宜しいかと思われます。
  • var x = x[i] + 1;について、この場合、最初にif(a == b){が実行された際にxが上書きされてしまう問題があります。そのため変数名を変更すると宜しいかと思われます。

From

javascript

1var x = x[i] + 1; 2sheet.getRange(i,11).setValue(x);

To

javascript

1var y = x[i][0] + 1; 2sheet.getRange(i,11).setValue(y);

参考

投稿2019/10/22 23:30

kisojin

総合スコア899

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

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

yoichiyy

2019/10/23 09:22

二次元配列でも、一行しか取得していないのだから大丈夫だろうと考えていました。 勘違いを晴らして頂き助かりました。 見事にコードも動きました。 y変数のことといい、本当にどうもありがとうございました!
kisojin

2019/10/25 02:21

ご返事ありがとうございます。無事解決できたとのことで安心しました。
guest

0

javascript

1function q218808() { 2 const a = 0; 3 const b = 0; 4 const vals = sheet.getRange('k:k').getValues.map(function (e) { 5 return (a == b) ? [e[0] + 1] : e; 6 }); 7 sheet.getRange(1, 11, vals.length, 1).setValues(vals); 8}

自己満足回答

投稿2019/10/23 02:57

papinianus

総合スコア12705

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

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

yoichiyy

2019/10/23 09:22

どうもありがとうございます。 python学習の過程で、mapという関数を見たことがあります。 頂いたコードがどのように動くのか、勉強してみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問