前提
対応日が今日から35日以内に担当する人の名前と日付を通知したいと考えています
実現したいこと
一旦抽出したことをGSSに書き込んで、そこをさらに取得してSlackに通知を飛ばそうと考えたのですが、
配列内の個数が違うことで、data数が合わないとエラーになってしまうので、修正したいです
発生している問題・エラーメッセージ
The number of columns in the data does not match the number of columns in the range.
該当のソースコード
function createMessage() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // スプシを取得 var sheet = ss.getSheetByName('シート1'); // 現在開いているシートを取得 var today = new Date() var gessyo = new Date(today.getFullYear(), today.getMonth() + 1, 1) var gessyo_1 = gessyo.setDate(gessyo.getDate()) var d1 = Utilities.formatDate(gessyo, 'Asia/Tokyo', 'yyyy-MM-dd'); var gessyo_re = new Date(today.getFullYear(), today.getMonth() + 1, 1) var gessyo_1 = gessyo_re.setDate(gessyo_re.getDate()) var d1 = Utilities.formatDate(gessyo_re, 'Asia/Tokyo', 'yyyy-MM-dd'); arr = [] var gessyo_today = gessyo.setDate(gessyo.getDate()).toString() var d0 = Utilities.formatDate(gessyo, 'Asia/Tokyo', 'yyyy-MM-dd'); arr.push(d0) for (i = 1, k = 4; i <= 35; i++, k++) { var gessyo_r = gessyo_re.setDate(gessyo_re.getDate() + 1).toString() var d35 = Utilities.formatDate(gessyo_re, 'Asia/Tokyo', 'yyyy-MM-dd'); arr.push(d35); } var completedTasks = sheet.getRange('A4:B').getValues(); // A、B列値を配列で取得 var columnBVals = sheet.getRange('A4:A').getValues().flat(); // A列値を配列で取得 var lastRow = columnBVals.filter(String).length; var kensaku = sheet.getRange('B4:B').getValues().filter(v => v[0]) for (var j = 0; j < lastRow; j++) { var newValues0 = kensaku[j].map( function (x) { var type = Object.prototype.toString.call(x); if (type == "[object Date]") { return x = Utilities.formatDate(x, 'Asia/Tokyo', 'yyyy-MM-dd'); } else { return x; } }); kensaku[j] = newValues0; } var kensaku2 = kensaku.flat() for (var h = 0; h < lastRow; h++) { var newValues = completedTasks[h].map( function (x) { var type = Object.prototype.toString.call(x); if (type == "[object Date]") { return x = Utilities.formatDate(x, 'Asia/Tokyo', 'yyyy-MM-dd'); } else { return x; } }); completedTasks[h] = newValues; } var array = [] var error = [""] for (var m = 0,n = 2; m < lastRow; m++,n++) { var completedTasks2 = completedTasks.filter(r => r[1] === arr[m]).map(r => r.slice(0, 1)).flat() if (!kensaku2.includes(arr[m])) { array.push(error) } else { array.push(completedTasks2) } } console.log(array) sheet.getRange(n, 7, array.length,array[0].length ).setValues(array) }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

あなたの回答
tips
プレビュー