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

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

ただいまの
回答率

91.36%

  • JavaScript

    11248questions

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

  • Google Apps Script

    365questions

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

javascript(Google Apps Script)でのif条件分岐のor(||)が上手くいかないです

解決済

回答 3

投稿 2017/12/06 18:58

  • 評価
  • クリップ 0
  • VIEW 108

plack

score 1

前提・実現したいこと

今月プログラミングを始めた者です。
Google Apps ScriptとGoogleスプレッドシートを使って、給与明細を作りたいと考えています。

給与明細を作る上で必要となる、社会保険料率表や源泉徴収税額表は定期的に更新となるため、更新月にアラートとして自動でメッセージを出せるようにしたいと思っています。

社会保険料率の更新月:毎年3月・9月
社会保険料率と雇用保険料率の更新月:毎年4月
源泉徴収税額の更新月:毎年1月
住民税の更新月:毎年6月・7月

これらをif文を使って条件分岐しようと考えています。
社会保険料率の「毎年3月・9月」のように年に数回更新されるものについては、if文のOR(||)を使っているのですが、どうやらここがネックになっているようです。(もしかすると他の部分が原因かもしれません)

最終的に、今月の月とif文による条件分岐がTRUEとなった時、6,13セルにメッセージを書き込むシステムです。

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

エラーメッセージは発生していません。
ただ、現在12月のはずなのですが、どうやら最初のif文(3月・9月)でTrueになっているようです。

該当のソースコード

function myFunction() {


  var myActiveSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var myActiveSheet = myActiveSpreadSheet.getSheets()[0];

  //今月の月を取得
  var date = new Date();  
  month = date.getMonth() +1;

  //3月、9月に社会保険料率が変更となる。
  if (month == 3||9) {
    myActiveSheet.getRange(6,13).setValue("・社会保険料率を最新版に更新してください。");    
  }

 //4月に社会保険料率と雇用保険料率が変更となる。(今月が12月なので便宜上ここに12を含めています)
  else if (month == 4||12) {
    myActiveSheet.getRange(6,13).setValue("・社会保険料率と雇用保険料率を最新版に更新してください。");    
  }

  //1月に源泉徴収税額表が変わる
  else if (month == 1){
      myActiveSheet.getRange(6,13).setValue("・源泉徴収税額表を最新版に更新してください。");
  }

  //6月と7月は住民税が変わる
  else if (month == 6||7){
      myActiveSheet.getRange(6,13).setValue("・住民税を最新版に更新してください。");
  }


}

試したこと

if === 3||9

if == 2
などを試しました。
if == 2
だと上手くいったように思います。

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

初めての投稿なので緊張しています。
質問方法などに問題がございましたら、ついでにご指摘いただけると助かります。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+5

サボらずに、if(month === 3 || month === 9)と書いてください。

month === 3 || 9は、(month === 3) || 9という意味になり、常にtrueとして評価されます(month === 3ならtrue、そうでなければ9)。

投稿 2017/12/06 19:02

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/06 19:07

    とてもわかりやすい解凍をいただきありがとうございました。初歩的なミスでしたが、これでまた一つレベルアップすることができました。

    キャンセル

  • 2017/12/06 19:19

    ヤバイ, 演算子の優先順位を間違えてた

    キャンセル

+2

||どちらかの条件式が真の時と認識してください

 if (month == 3 || month == 9) {

投稿 2017/12/06 19:02

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/06 19:08

    迅速なご回答をいただき感謝いたします。いつか私も回答者側になれるよう精進いたします。

    キャンセル

+2

以下演算子の優先順を勘違いしていたため, 余計な箇所を削除しました.


if文の条件判定式の書き方に問題があります. 

例えば「monthが3月もしくは9月である」ことを判定するのであれば

if(month == 3||9){}


ではなく

if(month == 3 || month == 9){}


とすべきです. 

投稿 2017/12/06 19:08

編集 2017/12/06 19:18

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

ただいまの回答率

91.36%

関連した質問

同じタグがついた質問を見る

  • JavaScript

    11248questions

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

  • Google Apps Script

    365questions

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