質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

507閲覧

【GAS】配列内の個数が違う場合の書き込み方

ai39

総合スコア7

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2023/01/25 12:22

編集2023/01/25 14:19

前提

イメージ説明

対応日が今日から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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

penguin520

2023/01/26 03:51

エラーが何行目で出るのかを教えてください。 サンプルとなる「スプレッドシート」を作成して質問に追加してください。 console.log(array) はそれをもとにこちらで出力を確認します。 デバックして欲しいなら、デバックできる情報を上げて欲しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問