以下のコードです。
function Dayoff(nickname, get, rowIndex) { Logger.log(get); var getMin = Number(get[0])*60 + Number(get[1]); const id = '112233445566778899aassddffgghhjjkkllqqwweerrtt'; const sheetName = 'holidays'; const workDays = SSSQL.OPEN(id).GET(sheetName).SELECT('*').WHERE('名前 = ' + nickname + ' AND 種類 = 休日出社 AND 消滅 > 0 AND 差分 <> 00:00').ORDERBY('取得日時’).RESULT(); const msg = new Array(); var i = 0; while(getMin > 0) { try { const value = workDays[i]; const diff = value['差分'].split(':'); const diffMin = Number(diff[0])*60 + Number(diff[1]); if(diffMin < getMin) { getMin -= diffMin; SSSQL.OPEN(id).GET(sheetName).UPDATE({ 消化: value['取得'] }, 'rowIndex = ' + value.rowIndex); } else { const dig = value['消化'] === '' ? [0, 0] : value['消化'].split(':'); const digMin = getMin + Number(dig[0])*60 + Number(dig[1]); SSSQL.OPEN(id).GET(sheetName).UPDATE({ 消化: ('00' + Math.floor(digMin / 60)).slice(-2) + ':' + ('00' + digMin % 60).slice(-2) }, 'rowIndex = ' + value.rowIndex); getMin = 0; } const date = value['取得日時’].split('-'); date.shift() msg.push(date.join('/')); } catch(e) { getMin = 0; msg = '申請した内容にエラーが発生しております’; SSSQL.OPEN(id).GET(sheetName).UPDATE({ 確認: false }, 'rowIndex = ' + rowIndex); GmailApp.sendEmail('kibayashi@foton.jp, nana@foton.jp', '[有休・代休管理]エラー', nickname + ' さんの代休申請の処理でエラーが発生しております。\n’ + e, { noReply: true }); } finally { i++; } } msg = Array.isArray(msg) ? msg.join(', ') + '出勤分' : msg; SSSQL.OPEN(id).GET(sheetName).UPDATE({ 備考: msg }, 'rowIndex = ' + rowIndex); }
エラーでは、67行目と言われている部分が、本内容では3行目の部分にエラーコードが表示されました。
var getMin = Number(get[0])*60 + Number(get[1]);
エラー内容です。
エラー TypeError: Cannot read property '0' of undefined Dayoff @ Google Script.gs:67
なぜ、エラーが出るのでしょうか。0だとダメなんでしょうか?
どうかよろしくお願い致します。
Number()は数値への変換、あとはただの掛け算と足し算と代入ですけど、何がわからないですか?
> 調べても、なかなか納得できる答えが見つからず、
解説を読んだけれど分からない箇所があった、という意味でしょうか?重複を避けるために読まれたサイトを追記されると良いかと思います。
作業依頼なら金払ってやってくれる人を募集しろ、でおわり。
みなさま質問に対してのご回答、誠にありがとうございます。
わからない部分は、(get[0])の0の部分です。
ここが、0と記入されているなら、後ろの60はいらないのでは?ということです。
get[0]というのに*60している意味がわからないということです。
それとも、[0]にすることによって、どんな数字にも対応できるということでしょうか?
曖昧で幼稚な質問をしてしまい、申し訳ございません。
私の質問も言葉足らずでした。
重複を避けるために読んだサイトを追記するなどの助言ありがとうございます。次回の質問に活かしていきたいと存じます。
「配列」がわかっていないようですね
そうですね。
正直よくわかっていません。
「配列」と言われてもどういった部分なのかも正直よく分かっておりません。
大変、申し訳ございませんでした。
質問すれば、分かっていただけるかもしれないという軽い気持ちで投稿しておりました。。。
> 重複を避けるために読んだサイトを追記するなどの助言ありがとうございます。次回の質問に活かしていきたいと存じます。
”次から”ではなく今からでも追記することは出来ますよ。(質問は編集可能ですので)
質問が再編集できること、ご教示いただきありがとうございます!
質問内容を変更しましたので、ご助力を仰ぎたくお願い申し上げます。
> なぜ、エラーが出るのでしょうか。0だとダメなんでしょうか?
Dayoff()の引数getに当たる部分には何を渡したのでしょうか?型が合っていないだけではないですか?
Dayoff()の引数getに当たる部分には、数値を渡しています。(時間を表示したいので)
数値はNumberの型ではないのでしょうか?
質問のコードはどこかから拾ってきたものでしょうか?
getは配列を想定した変数に見えます。
拾ってきたのではなく、前任者が作成したテストコードです。
おっしゃる通り、00:00という数値を作るために、配列を想定したget変数だと思われます。
> 拾ってきたのではなく、前任者が作成したテストコードです。
ではその前任者に問い合わせるのが一番良いかと思いますが、出来ない場合でも社内の有識者の人に聞いた方が良いかと思います。仕様書等何もないんでしょうか?