Exception: The parameters (number,null,number) don't match the method signature for SpreadsheetApp.Sheet.getRange.
といったエラーがいきなり出るようになっており、大変手こずっています。
今までは問題なく処理は実行できておりましたが、ssで管理しております表の月が5月に変わった際、処理が本来slackに吐かれておったものが、吐かれなくなってしまいました。
問題のコードはこちら
以上、自分なりに問題ありそうな関数の部分を載せました。
もう少しここが見たいなどありましたら、何なりとおっしゃってください。
よろしくお願いいたします。
↑こちら5月のssです
4月はうまくいっていたのですが、5月に入っていきなり出力結果が#REF!に変わり、今に至ります。#ERRORと出ているセルが、Z18になります。問題になるであろう範囲のみ載せましたが、不備がありましたらおっしゃってください。よろしくお願いします!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/04 02:02
回答1件
0
ベストアンサー
- findTodaysRow()関数は、日付列から本日の日付が見つからなかった時undefinedを返すため、エラーが発生しているものと思われます。
下記のように、日付が見つからなかった場合の処理を追加する必要があると思います。
- findTodaysRow()関数ではdateが、getTodaysPoints()関数では row, date, sheetが、それぞれグローバル変数になっています。仮に、グローバル変数にする必要がないのであれば、これらの変数名が関数間で重複していると誤動作の元になるので、定義時に、const(再代入する可能性がある場合は let) を付けましょう。
js
1function findTodaysRow() { 2 const sheet = defineSheet(); 3 // getRange(row, column, numRows, numColumns) 4 // B4(4,2)を始点にY4(1,24)までを取得 5 const days = sheet.getRange(4, 2, 1, 24).getValues(); 6 var today = new Date(); 7 let i = 0; 8 for(const day of days[0]){ 9 // Dateオブジェクトではない場合はスキップする。 10 if (Object.prototype.toString.call(day) !== '[object Date]') { 11 i++; 12 continue; 13 } 14 const date = day.getDate(); 15 if (date == today.getDate()) { 16 // どこの列か取得(つまり日付列を特定する) 17 let row = i + 2; 18 return row; 19 } 20 i++; 21 } 22 // 本日の日付が見つからなかった場合 23 return -1; 24}
js
1function getTodaysPoints () { 2 const row = findTodaysRow(); 3 if (row === -1) { 4 const today = new Date(); 5 console.log(`本日の日付(${today.getDate()}日)がシートから見つかりませんでした。`); 6 return; 7 } 8 const sheet = defineSheet(); 9 const points = sheet.getRange(5, row, 13).getValues(); 10 // 今日のポイントの始点 11 // ★★★SSに人を増やしたときはiの数をその分だけ増やすこと★★★ 12 let i = 23; 13 for (const point of points) { 14 // getRange(row, column) 15 sheet.getRange(i, 30).setValue(point); 16 i++; 17 } 18 // 今日の営業日を更新 19 var today = new Date(); 20 const date = today.getDate(); 21 if (date == 1) { 22 sheet.getRange('Z1').setValue(1); 23 sheet.getRange('AB1').setValue(1); 24 } else { 25 progress = sheet.getRange('Z1').getValue(); 26 sheet.getRange('Z1').setValue(progress + 1); 27 } 28 //以降の処理は質問文に書かれておらず不明。 29}
投稿2022/05/03 13:56
編集2022/05/03 14:00退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/04 02:23
退会済みユーザー
2022/05/04 02:30 編集
2022/05/04 02:35
退会済みユーザー
2022/05/04 02:37
2022/05/04 06:10
退会済みユーザー
2022/05/04 06:59
2022/05/04 08:33
2022/05/04 08:36
退会済みユーザー
2022/05/04 09:26 編集
2022/05/04 11:08
2022/05/04 11:09
退会済みユーザー
2022/05/04 11:19
2022/05/04 11:23
2022/05/04 11:33
退会済みユーザー
2022/05/04 12:06 編集
2022/05/04 11:58
退会済みユーザー
2022/05/04 12:13
退会済みユーザー
2022/05/04 13:50
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。