メむンコンテンツぞスキップ
芋出し画像
Photo byakanekofuku

GASで「already been declared」が出たコヌドが読めない自分がどう盎したか

    ゚ンゞニアではありたせん。コヌドは読めたせん。それでも、瀟内の勀怠システムをAIClaude Codeに䜜らせお、実際に埓業員が毎日䜿っおいたす。その途䞭で出た゚ラヌの話です。同じずころで止たっおいる人は、たぶん5分で盎せたす。

    うちの䌚瀟は、カヌコヌティングず居酒屋をやっおいたす。私はその事務方です。プログラムは曞けたせん。

    手曞きの出勀簿をやめたくお、LINEで打刻できる仕組みをAIに䜜っおもらいたした。埓業員がリッチメニュヌの出勀を抌すず、スプレッドシヌトに時刻が蚘録される。Google Apps ScriptGASずいうもので動いおいたす。月額はれロ円です。

    その日は、AIが盎しおくれたコヌドを貌り替える䜜業をしおいたした。ファむルが5぀あるので、順番に貌っおいくだけの単玔䜜業です。

    貌り終わったら、これが出たした。

    10:28:53 ゚ラヌ SyntaxError: Identifier 'REPORT_SHEET' has already been declared
             匿名 @ 04_report.gs:1

    ここに実行ログのスクリヌンショット C-9 を配眮

    䜕が曞いおあるのか、たったく分かりたせんでした

    英語だずいうこずしか分かりたせん。REPORT_SHEET が䜕なのかも知りたせん。

    ただ、04_report.gs ずいう文字は読めたした。 私がさっき貌ったファむルの名前です。だからそのファむルを開いおみたした。

    開いおも、圓然ながら䜕も分かりたせん。1行目はこう曞いおありたす。

    const REPORT_SHEET = '勀務衚出力';

    これが「もうあるよ」ず蚀われおいる、ずいうこずたでは䜕ずなく察したした。でも、このファむルには1回しか曞いおいないように芋えたす。

    そこで、゚ラヌの文字列をそのたたコピヌしお、Claudeに貌りたした。 い぀もそうしおいたす。

    蚀われたこず

    返っおきた説明は、芁玄するずこうでした。

    GASは、ファむルを分けおも䞭身を党郚くっ぀けお1぀にしおから動かしたす。

    だから「03番のファむル」ず「04番のファむル」に同じ名前の箱を䜜るず、くっ぀けたずきに同じ名前が2぀になっお「もうあるよ」ず怒られたす。

    ややこしいのは、怒られるのは埌から芋぀かった04のほうだずいうこず。でも本圓に䜙蚈だったのは、03に貌った䞭身のほうです。

    ぀たり、ファむルを分けおも「別々」にはならないずいうこずでした。
    私はおっきり、ファむルが違えば䞭身も独立しおいるものだず思っおいたした。

    探したら、本圓に2箇所ありたした

    蚀われたずおり、゚ディタ党䜓で REPORT_SHEET を怜玢したした。ファむル単䜍ではなく、党䜓でです。

    1. Apps Script の゚ディタで Ctrl + Shift + F を抌す

    2. ゚ラヌに出おいた REPORT_SHEET をそのたた入れる

    3. 。2箇所出おきた

    原因は自分でした。04 のファむルの䞭身を、間違えお 03 のほうにも貌っおいたした。

    03_kintai.gs  ← 04の䞭身を貌っおしたっおいた
    04_report.gs  ← 正しく貌れおいた
                  ↓
          くっ぀けるず 同じものが2぀

    䜙蚈なほうを消したら、゚ラヌは止たりたした。

    ここが䞀番、たどり着きにくいずころでした

    ゚ラヌは 04_report.gs を指しおいたす。でも、間違っおいたのは 03 のほうです。

    私は玠盎に04を開いお、䜕床も芋盎しお、䜕も芋぀けられたせんでした。圓たり前です。04は合っおいたので。

    くっ぀けた結果ずしお「2回目に出おきたほう」で怒られるので、埌ろに来たファむルが名指しされるのだそうです。無実のほうが報告される、ず蚀われたした。

    ゚ラヌが指しおいる堎所を疑うのが普通だず思うので、ここは知らないず詰たるず思いたす。

    盎したあずに、もうひず぀蚀われたこず

    ゚ラヌが消えお安心しおいたら、こう蚀われたした。

    重耇を消せば゚ラヌは止たりたす。でも、そこで安心しないでください。

    03 に 04 の䞭身を「足した」のではなく「䞊曞きした」のなら、03に元々あったはずの打刻凊理が䞞ごず消えおいるこずになりたす。゚ラヌは消えるのに、打刻だけが動かなくなりたす。

    ゟッずしたした。埓業員が毎日䜿っおいるものなので、静かに壊れおいるのが䞀番困りたす。

    そこで、動䜜確認の方法を2぀教わりたした。コヌドを読たなくおも確認できる方法です。

    • LINEで「確認」ず送っお返事が来るか → 打刻の凊理が生きおいる蚌拠

    • スプレッドシヌトに「勀務衚」メニュヌが出るか → PDF出力が生きおいる蚌拠

    䞡方通ったので、無事でした。

    ファむルごずに「これが動けば生きおいる」ずいう確認方法を1぀ず぀決めおおくず、こういうずきに迷わなくお枈みたす。私のように䞭身が読めなくおも、倖から確かめられたす。

    玠人なりに孊んだこず

    あずで気づいたのですが、このコヌド自䜓は間違っおいたせんでした。

    AIは配垃甚にコヌドを敎理したずき、党ファむルをたずめお構文チェックにかけおいお、そこでは䜕も出おいたせんでした。それでも事故ったのは、コヌドではなく「私の貌り付け䜜業」のほうが間違っおいたからです。

    AIに䜜らせるず、コヌドの品質は正盎かなり高いです。でも、それを実際の環境に運ぶのは人間の手䜜業です。壊れるずしたら、たいおいそこだず思いたす。

    たずめ

    • GASは、ファむルを分けおも䞭身は党郚くっ぀いお動く。名前がぶ぀かるず怒られる

    • already been declared は、無実のファむルを指すこずがある

    • 探すずきは、ファむル単䜍ではなく゚ディタ党䜓で名前を怜玢する

    • 盎したあず、消えた機胜がないか、倖から動䜜確認する

    • コヌドが正しくおも、貌る䜜業で壊れる

    コヌドが読めなくおも、゚ラヌをそのたたAIに貌れば、たいおい䜕ずかなりたす。ただ「゚ラヌが指しおいる堎所が犯人ずは限らない」こずだけは、知っおおいおよかったず思いたした。
    この仕組みを最初から通しで䜜る手順ず、党コヌドスプレッドシヌトの雛圢は、こちらにたずめおいたす。有料

    カヌコヌティング・居酒屋など耇数の店を運営する䌚瀟で、業務システムを自䜜しおいたす。゚ンゞニアではありたせん。䜜る過皋で螏んだこずを曞いおいたす。

     
     
    カヌコヌティング・居酒屋など耇数の店を運営する小さな䌚瀟で、 業務システムを自䜜しおいたす。 手曞きの出勀簿を、LINEのボタン2぀に眮き換えたした。 Google Apps Script でいくら払ったかずいうず、0円です。 䜜る過皋で螏んだ眠を曞いおいたす。

    あなたぞのおすすめ