デバッグ

きのう書いた仕事。 ロジックはあってそうなのに、想定した動きをしない。 困ったなと思い、比較的最近、社内でリリースされた生成AIに聞いてみるとちゃんと答えを教えてくれた。 ちょっと長いけどダメなコードと正しいコードはこんな感じ。

■ ダメなコード function onLoad() { // 商品発送日入力に今日の日付をセット const today = new Date().toLocaleDateString('ja-JP', {year: 'numeric',month: '2-digit', day: '2-digit'}); document.getElementById('shippingDate').value = today; document.getElementById('orderDate').disabled = true; document.getElementById('loginUser').innerText = 'NULL'; // ログインユーザ名を得る google.script.run.withSuccessHandler(function(loginUserName) { // ログインユーザ名をhiddenの’loginUser’に保存する document.getElementById('loginUser').innerText = loginUserName; // debug alert(loginUserName); }).getLoginUser(); // debug alert('loginUser:' + document.getElementById('loginUser').innerText); if(document.getElementById('loginUser').innerText == 'NULL') { // ログインに失敗(Xボタンで抜けた)したので、再表示を促す。 document.body.innerHTML = 'ログインに失敗しました。'; } } ■ 正しいコード function onLoad() { // 商品発送日入力に今日の日付をセット const today = new Date().toLocaleDateString('ja-JP', {year: 'numeric',month: '2-digit', day: '2-digit'}); document.getElementById('shippingDate').value = today; document.getElementById('orderDate').disabled = true; document.getElementById('loginUser').innerText = 'NULL'; // ログインユーザ名を得る google.script.run.withSuccessHandler(function(loginUserName) { // ログインユーザ名をhiddenの’loginUser’に保存する document.getElementById('loginUser').innerText = loginUserName; // debug alert(loginUserName); // debug alert('loginUser:' + document.getElementById('loginUser').innerText); if(document.getElementById('loginUser').innerText == 'NULL') { // ログインに失敗(Xボタンで抜けた)したので、再表示を促す。 document.body.innerHTML = 'ログインに失敗しました。'; } }).getLoginUser(); }
google.script.runは、非同期なので、帰ってくる前にloginUserを拾っていたのが原因。 google.script.runのハンドラーで実行するように修正するとちゃんと動いた。 てなわけで、最近は生成AIにプログラムを教えてもらっている。(´・ω・`)
虎に翼、平田満が出るのは、HPを見て知っていたけど、たった数シーンでいなくなるとは...。
--
くもり

No comments: