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

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

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

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

JavaScript

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

Q&A

受付中

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

ai39
ai39

総合スコア7

Google Apps Script

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

JavaScript

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

0回答

0グッド

2クリップ

124閲覧

投稿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/ツールのバージョンなど)

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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2023/01/25 17:02

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

penguin520

2023/01/26 03:51

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

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

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

JavaScript

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