supertofu2
@supertofu2

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【GAS(スプレッドシート)】昨日まで動作していたプログラムが動かなくなりました

解決したいこと

スプレッドシートのAppsScriptにて、昨日まで動作していた関数が突然動かなくなりました。
動作としては、「入力」シートA2に入れた内容を「データ」シートの該当する日付の横に転記する、といったものです。
「入力」シートA1にはTODAY関数を入れてあります。
手動でも十分できる内容ではあるのですが、動作不良の原因を知りたく質問しました。

発生している問題・エラー

Unexpected error while getting the method or property matchEntireCell on object FindReplaceText.

該当するソースコード

google apps script

function test(){

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1 = ss.getSheetByName('入力');
var sheet2 = ss.getSheetByName('データ');

var datemoto = sheet1.getRange("A1").getValue();
var datefind = Utilities.formatDate(new Date(datemoto), "JST","yyyy/MM/dd");
var naiyou = sheet1.getRange("A2").getValue();

var textFinder = sheet2.getRange("A:A").createTextFinder(datefind)
.matchEntireCell(true);

var cells = textFinder.findNext();
var cells2 = cells.offset(0, 1);

cells2.setValue(naiyou);

sheet1.getRange("A2").clearContent();

}

自分で試したこと

createTextFinderが上手くいっていないように思います。

0

2Answer

「入力」シートA2に入れた内容を「データ」シートの該当する日付の横に転記する

当方で上のコードを実行してみましたが、エラーとかにもならず、期待通りに動いている様に見えます。

log0.png

次のように log を追加して、結果を見てみてください。

+ Logger.log(`datefind: ${datefind}, typeof datefind: ${typeof datefind}`);
  var textFinder = sheet2.getRange("A:A").createTextFinder(datefind)
  .matchEntireCell(true);
0Like

Comments

  1. @supertofu2

    Questioner

    ありがとうございます。
    頂いたlogを追加したところ、同様の結果が得られましたが、その後やはりエラーが出てしまいました。
    プログラム以外の部分の問題でしょうか...。

    Screenshot 2024-12-10 16.03.44.png

  2. エラーメッセージでは matchEntireCall メソッドが無いということなので、(object FindReplaceText っていうのがちょっと謎ですが)、そのメソッドを持つ Class TextFinder のオブジェクトを返してくれているはずの createTextFinder の戻り値を確認してみてください。

    let textFinderDefault = sheet2.getRange("A:A").createTextFinder(datefind);
    Logger.log(typeof textFinderDefault);
    var textFinder = textFinderDefault.matchEntireCell(true);
    

    なお、昨日まで動作していたということですが、そのときと sheet2 の内容が違っていたりしませんか?

  3. @supertofu2

    Questioner

    ありがとうございます。
    上記試したところ、戻り値はobjectでした。

    sheet2はデータが溜まるだけの場所なので特に触れていない...と思います。
    作りとしては、A列に日付をyyyy/MM/dd型で1年分並べているだけです。
    日付トリガーで実行しているのですが、12/9からエラーが出始めているようです。

  4. @supertofu2

    Questioner

    時折同じ行で違うエラーが出るパターンがあるので、内容を共有させていただきます。

    TypeError: Cannot read properties of undefined (reading 'indexOf')

  5. ああ、そうか、すみません、typeofの表示だけなら単にobjectと表示されるだけですね。要はそのobjectがどういう型のobjectか(Class TextFinderなのか)、そのobjectにmatchEntireCallメソッドが無いとはどういうことなのかを見てみたいわけなので、textFinderDefault自体をもう少し詳しく見てみてください。

    あと、正常に動いていたときのsheet2が残っていればそれを使って試してみたいところですが、残ってはいないでしょうか。

  6. エラーメッセージでは matchEntireCall メソッドが無いということなので、

    『メソッドが無い』とは言ってませんね。
    『matchEntireCell を取得中に予期しないエラーが発生しました』です。

    「データ」シートのスクショを貼ることは可能ですか。
    行数はどの程度ですか?
    日付では無い、違う書式になっていたりしませんか?

  7. 『メソッドが無い』とは言ってませんね。
    『matchEntireCell を取得中に予期しないエラーが発生しました』です。

    まあ、そうですね・・・
    matchEntireCell メソッドが正常・健全な状態でオブジェクトに存在していたら、そんなエラーは起こりにくいだろうという推察から、オブジェクトが正常な Class TextFinder ではなかったのか、つまり matchEntireCell を持たない何らかのオブジェクトが createTextFinder から返されたのではないか、という可能性をまず確認したいですね、というのが主眼です。その推察から「無い」と簡単に表現しただけなんですが、そんなところをつつかれるとは思いませんでした。

  8. @supertofu2

    Questioner

    ありがとうございます。

    不勉強なもので詳しい確認方法が分からないのですが、デバッガの変数欄を貼らせて頂きます。
    他ファイルでもいくつか試したところ、上の画像のようになっている時は上手く実行でき、下の画像のようになっている時はエラーが出る...ように思います。
    掘った方が良さそうな所がありましたらご教示ください。

    Screenshot 2024-12-11 10.12.42.png

    Screenshot 2024-12-11 10.25.04.png

    エラーが出る前の日付のデータを復元して使用してみましたが、駄目でした...。

    データのシートはこのような形です。
    日付形式には恐らくなっていると思います。
    1行目は2024/04/01から始まり、オートフィルで1年分作っています。
    366以降は1000まで空白があります。

    Screenshot 2024-12-11 09.48.18.png

  9. 「データ」シートのスクショを見る限り、おかしな点は見当たりませんね。

    追加で、
    変数textFinderDefaultの左の >をクリックして展開(v)した後のスクショを貼ってもらえますか。
    textFinderDefaultの下に12行ほど⭐️見られる範囲のスクショ)

    この場合も「Unexpected error while getting the method or property matchEntireCell on object FindReplaceText.」エラーが起きますか?

    scr1.png

  10. @supertofu2

    Questioner

    2階層程展開したところ以下の通りでした。

    Screenshot 2024-12-11 16.06.23.png

    エラーは
    TypeError: Cannot read properties of undefined (reading 'indexOf')
    が出ております。

  11. ↑ まったく想定していた内容と違っていて(自分の環境で実行した内容ともまったく違う内容で)、驚いています。
    このスプレッドシートを実際に見て見ないことには、これ以上は原因究明は無理だと思いました。

    もし、可能であれば、nak435com@gmail.comに(参照のみで可)共有設定していただければ、こちらでコピーして実物でさらに原因究明したいと思います。ご検討ください。

  12. @supertofu2

    Questioner

    試してみたのですが、セキュリティの関係上データ共有が通らなそうでした...。
    申し訳ありません。

シートのセルに2024年12月10日が無くて検索したけど見つかりませんでした
ってことじゃないの?

0Like

Your answer might help someone💌