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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Hubot

HubotはGitHub社が開発したチャットbotのフレームワークです。

Q&A

解決済

1回答

459閲覧

Javaでfuction

退会済みユーザー

退会済みユーザー

総合スコア0

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Hubot

HubotはGitHub社が開発したチャットbotのフレームワークです。

0グッド

1クリップ

投稿2023/10/24 01:34

編集2023/10/25 02:44

c言語の謎を解明したい
c言語とはなんなのか複雑がすぎる
t言語はあるのかないならいつ生まれるか

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

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

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

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

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

int32_t

2023/10/24 02:11

置換しようとして上手く行かなかったコードを開示したほうが的確な助言ができると思います。 比較がうまくいかないなら、比較する前に値を表示するなどして中身を確認しましょう。
mdj

2023/10/24 02:56

for(;;) { の部分、条件を消してますか?それともこのままですか? このままだとしたら条件が必要だと思いますが。
YellowGreen

2023/10/24 04:47

for(;;)ですが、while(1)と同様無限ループです。 条件は、break文のところにある !rangeA です。
mdj

2023/10/24 08:13

ご返答ありがとうございます。無知で失礼いたしました。
guest

回答1

0

ベストアンサー

できるだけ元のコードをそのままにしてありますが、
似ていて異なる文字が使われていたりしたので、
ここからコードを全てコピペしてお試しください。
(追記)
データが異なる場合に、ログを表示するようにしました。
(追記2)
各行にコメントを入れました。

js

1function cellReplace() { 2 //このスクリプトがあるスプレッドシートから指定の名前のシートをssとして取得 3 var ss = SpreadsheetApp.getActive().getSheetByName("シート1"); 4 //データの先頭の行番号を変数nに代入 5 var n = 5; 6 //今日の日付を生成し、変数todayに格納 7 let today = new Date(); 8 //日付をyyyy/MM/ddの書式の文字列に変換して変数todayに代入 9 today = Utilities.formatDate(today, "JST", "YYYY/MM/dd") 10 //条件を設定せずに繰り返し処理を開始(無限ループ) 11 for (; ;) { 12 //B列のn行目のセル範囲をrangeBとして取得 13 var rangeB = ss.getRange("B" + n); 14 //C列のn行目のセル範囲をrangeCとして取得 15 var rangeC = ss.getRange("C" + n); 16 //A列のn行目のセル範囲に表示されている文字を変数rangeAに代入 17 var rangeA = ss.getRange("A" + n).getDisplayValue(); 18 //変数rangeAの値が無いか0(理論値で偽)のとき 19 if (!rangeA) { 20 //繰り返し処理(無限ループ)を抜ける 21 break; 22 //直近のifの条件を満たしたときの処理はここまで、 23 //elseが続くのでその後は条件を満たさなかったときの処理が始まる 24 } else { 25 //変数rangeAの値が変数todayの値と一致しない 26 //または、rangeBのセル範囲から取得した値が「記載済み」と一致しないとき 27 if (rangeA != today || rangeB.getValue() != "記載済み") { 28 //ログに変数todayの値とセル範囲rangeBから取得した値を表示 29 console.log('today: ' + today + ' rangeB: ' + rangeB.getValue()); 30 //直前のifの条件を満たしたときの処理はここまで 31 } 32 //変数rangeAの値が変数todayの値と一致し、 33 //かつ、rangeBのセル範囲から取得した値が「記載済み」と一致するとき 34 if (rangeA == today && rangeB.getValue() == "記載済み") { 35 //rangeBのセル範囲から取得した値の「記載済み」の部分を「未記載」に置換した上で 36 //rangeBのセル範囲に上書き 37 rangeB.setValue(rangeB.getValue().replace("記載済み", "未記載")); 38 //rangeCのセル範囲から取得した値の「◎」の部分を空白に置換した上で、 39 //rangeCのセル範囲に上書き 40 rangeC.setValue(rangeC.getValue().replace("◎", "")); 41 //直前のifの条件を満たしたときの処理はここまで 42 } 43 //nの値に1を加算する 44 n++; 45 //最初のifの条件を満たさなかったとき(else以降)の処理はここまで 46 } 47 //for(;;)以降の処理はここまでを繰り返す 48 } 49//for(;;)の繰り返し処理(無限ループ)を抜けたらここに到達 50}

投稿2023/10/24 04:14

編集2023/10/24 11:12
YellowGreen

総合スコア731

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

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

YellowGreen

2023/10/24 04:16

行ごとにセルの値を取得してから書き込んでいるので、 それなりに実行時間がかかると思います。
退会済みユーザー

退会済みユーザー

2023/10/24 06:05

ご回答ありがとうございます♪ コード転記し、実行してみたのですが何も起こらず2、3秒で終了しました、、エラーは起こらなかったのでどこが悪かったんでしょう、、🥲
YellowGreen

2023/10/24 06:09

転記したスクリプトエディタには、上以外にコードがありますか?
退会済みユーザー

退会済みユーザー

2023/10/24 06:18

上記のみです、、!
YellowGreen

2023/10/24 06:21 編集

A列5行目以降の日付の表示は2023/10/24になってますか? さらに B列は完了でなく記載済みになっていますか?
退会済みユーザー

退会済みユーザー

2023/10/24 06:23

どちらも相違なくなってます! 実行すると何も起こらない感じです、、
YellowGreen

2023/10/24 06:33

回答のコードを一部変更したので、差し替えてみて実行していただけますか?
退会済みユーザー

退会済みユーザー

2023/10/24 06:44

ありがとうございます♪ 下記、10行目が空で読み込めないとエラー吐きました、、! TypeError: Cannot read properties of null (reading getRange) myFunction@test.gs:10
YellowGreen

2023/10/24 07:31

シート名を書き換えてますか?
退会済みユーザー

退会済みユーザー

2023/10/24 08:38

シート名書き換えて実行しましたが同じくエラー吐きました!
YellowGreen

2023/10/24 09:33 編集

シート名が実際のシート名と合っていない時のエラーです。 シート名とスクリプト内のシート名を両方とも変更して一致する名前にしてみてください。両方ともシート2にしてみるなど。 念のためですが、実際のシート名がシート2のときは、 スクリプトは ....getSheetByName("シート2"); のようにします。全角半角の違いなどにご留意を。 なお、 "(引用符)は質問にお示しのコードでは違う文字になっていたので、 直接入力せずに、上の回答から行ごとコピペし直してから 引用符の中だけを書き換えてみてください。
退会済みユーザー

退会済みユーザー

2023/10/24 09:43

ありがとうございます♪ シート名変えてみるとエラー解消されており、 実行ログにもtodayの中身とrangeBの中身も確認できました! ただ、シート内の値は変化ありませんでした!
YellowGreen

2023/10/24 09:46 編集

ログからtodayが今日の日付の行のrangeBの値がどう表示されているか教えてください。
退会済みユーザー

退会済みユーザー

2023/10/24 09:52 編集

todayが2023/10/24 rangeBが未記載と出てます!
YellowGreen

2023/10/24 09:54

日付のどこかを全角文字で入力していたりはしませんか?
退会済みユーザー

退会済みユーザー

2023/10/24 09:54

動きました!
退会済みユーザー

退会済みユーザー

2023/10/24 09:56

お手数ですが動き理解したいので、コメント入れていただくこと可能でしょうか、、?
YellowGreen

2023/10/24 09:57

いま、外なので、落ち着いてからでよろしければ。
退会済みユーザー

退会済みユーザー

2023/10/24 10:14

ありがとうございます😭
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問