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

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

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

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

Q&A

解決済

2回答

636閲覧

gas ifについて

0000a

総合スコア18

Google スプレッドシート

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

0グッド

0クリップ

投稿2021/08/18 23:46

C1のセルが1ならば、E1にvalue3の数値を代入 M1は空欄
C1のセルが-1ならば、M1にvalue3の数値を代入 E1は空欄
という処理をしたいです。素人質問で恐縮ですが以下のどこを正せば良いでしょうか?
C1の条件によらず、E1 M1にvalue3が入ってしまいます。

if(sheet.getRange(1, 3).getValue() = 1){
sheet.getRange(1, 5).setValue(value3);
sheet.getRange(1, 13).setValue();
}else
sheet.getRange(1, 5).setValue();
sheet.getRange(1, 13).setValue(value3);

またC1セルには
query(split(A1,","),"select Col3")
という式が入っているのですが、これをコード上に組み込むにはどう修正すればよろしいでしょうか?(sheet.getrange(1,3).getValue()がC1のつもりです。。)

お手数ですがご教示いただけますと幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

あなたのコードにはいくつか問題点があります。

  1. SpreadsheetApp.Range.setValueメソッドは、引数をひとつ必要とするので、引数を書かずにsetValue()と書くとエラーになります。セルの内容をクリアしたいのであればclearContent()を使いましょう。

  2. elseの後に{}がないため、elseの直後の文sheet.getRange(1, 5).setValue();だけが条件不成立時に実行されます。その直後の、sheet.getRange(1, 13).setValue(value3);は、if文の条件が成立したかどうかに関わらず常に実行されます

  3. GASで等値比較を行なう演算子=====です(2つの違いは自分で調べてください)。

  4. もし、「C1のセルが1と-1以外になる可能性」があるのであれば、ひとつのif文ではなく、「C1のセルが-1かどうか」のチェックも必要です。

  5. A1セルの値を","区切りで分割したときの3つめの値」は、GASのコードでsheet.getRange(1, 1).getValue().split(",")[2]と書けます。添字は0から始まるため、3つめの値は[2]で取得する点に注意が必要ですね。

以上の点を踏まえると、コードは以下のようになるでしょう。

GAS

1function myFunction() { 2 var sheet = SpreadsheetApp.getActiveSheet(); 3 var value3 = "ほげほげ"; 4 var valueOfTarget = sheet.getRange(1, 1).getValue().split(",")[2]; 5 6 if (valueOfTarget == 1){ 7 sheet.getRange(1, 5).setValue(value3); 8 sheet.getRange(1, 13).clearContent(); 9 } else if (valueOfTarget == -1) { 10 sheet.getRange(1, 5).clearContent(); 11 sheet.getRange(1, 13).setValue(value3); 12 } 13} 14

投稿2021/08/19 01:06

Daregada

総合スコア11990

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

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

0000a

2021/08/19 03:47

迅速にご回答いただきありがとうございます、望みのものができました またコメントも後学に拝読させていただきます。
guest

0

if(sheet.getRange(1, 3).getValue() == 1){ sheet.getRange(1, 5).setValue(value3); sheet.getRange(1, 13).setValue(); }else{ sheet.getRange(1, 5).setValue(); sheet.getRange(1, 13).setValue(value3); }

ではどうでしょう

投稿2021/08/19 00:22

y_waiwai

総合スコア87800

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

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

0000a

2021/08/19 00:55

早速のご回答ありがとうございます。 ただ ReferenceError: Invalid left-hand side in assignment と出てしまいます。お手数ですがよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問