作業終了日付フィールドの条件入力について

スマートフォン用となります。

テーブル(作業実績_0)の中に

作業開始(日付)、作業終了(日付)、作業実績(ドロップダウン)、備考欄(文字列)

を作成しています。

作業終了ボタンをクリック後に、テーブル内の作業開始と同日の行の作業終了に

現在時刻を入力。

作業開始と同日が存在しない場合は、Alertを表示させていのですが動作しません。

どこが間違っているのでしょうか?

 

(function() {
  “use strict”;

  // mobile.app.record.create.showとmobile.app.record.edit.showイベントに対するハンドラを設定
  kintone.events.on(
    [“mobile.app.record.create.show”, “mobile.app.record.edit.show”],
    function(event) {
      // 作業開始日付フィールドコード
      var startDateFieldCode = “作業開始”;

      // テーブルフィールドコード
      var tableFieldCode = “作業実績_0”;

      // 作業終了フィールドコード
      var endWorkFieldCode = “作業終了”;

      // 作業終了ボタンを作成
      var endWorkButton = document.createElement(“button”);
      endWorkButton.id = “end_work_button”;
      endWorkButton.innerHTML = “作業終了”;
      endWorkButton.onclick = function() {
        var record = kintone.mobile.app.record.get();
        var table = record.record[tableFieldCode].value;

        // 現在の日付を取得
        var currentDate = moment().format(“YYYY-MM-DD”);
        // 現在時刻を取得
        var currentTime = moment().format(“YYYY-MM-DDTHH:mm”);

        // テーブルの行をループして作業開始日付と同じ日付の行に作業終了日付を入力
        var foundMatch = false;
        for (var i = 0; i < table.length; i++) {
          var row = table[i].value;
          var startDate = row[startDateFieldCode].value;

          // 作業開始日付と同じ日付の場合、作業終了日付に現在時刻を入力
          if (startDate && startDate.substr(0, 10) === currentDate) {
            row[endWorkFieldCode].value = currentTime;
            foundMatch = true;
          }
        }

        // レコードを更新
        kintone.mobile.app.record.set(record);
        
        if (foundMatch) {
          alert(“作業終了!保存を押してください!”);
        } else {
          alert(“作業開始ボタンを押してください”);
        }
      };

      // 作業終了ボタンをスペースフィールドに追加
      kintone.mobile.app.record
        .getSpaceElement(“my_space_field”)
        .appendChild(endWorkButton);
    }
  );
})();

gri_gri33さん

試していませんが、パッとみたら、akertの書き方に問題があると思います。

akertはfor文の外にあるので、全てループが終わってから、alert処理を行なわれます。

つまり、テーブルの最後行の開始日を見てどんなメッセージを出すか判断します。

行ごとにalertを出したい場合は、akert処理をfor文に入れるべきのでは?

 

https://cybozudev.zendesk.com/hc/ja/articles/4977994758297-kintone-JavaScript-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%BE%E3%81%A8%E3%82%81#set-breakpoints

なぜその行に到達しないか、はブレークポイントやエラーログなど確認するとよりよいかとおもいます。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。