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

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

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

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

解決済

二次元配列から条件に一致する1行の転記について

haruharu
haru

総合スコア1

Google Apps Script

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

1回答

0評価

0クリップ

258閲覧

投稿2022/03/26 17:00

シート1から二次元配列で取得したリストを編集した後、条件に一致する行をシート2に
転記しようとしていますが、転記する箇所でエラーになり解決することができず行き詰まっております。
セルを1つ1つ指定すると解決するのですが、できれば1行で転記してしまいたいです。

エラーの箇所 : sh1.getRange(m,1,m,6).setValues(c_list);
ロ    グ : [[1班,100012,一二田,一二美,2022/04/15,2022/05/29]]

エラーメッセージ
Exception: The number of rows in the data does not match the number of rows in the range. The data has 1 but the range has 2.
listUp @ alert.gs:41

ソースコード

GoogleAppsScript

function listUp() { let n = 0;//リストの行を数えるカウント変数 let m = 2;//転記先の行を数えるカウント変数 const bk = SpreadsheetApp.openById("スプレッドシートID"); const sh = bk.getSheetByName("リスト"); const sh1 = bk.getSheetByName("転記用"); //★指定列の一番下の行番号を取得する let maxRng = sh.getRange(sh.getMaxRows(), 2); let lastRng = maxRng.getNextDataCell(SpreadsheetApp.Direction.UP); let lastraw = lastRng.getRow();  //★日付の変数 const day0 = new Date(); const day_30 = day0.setDate(day0.getDate() + 30); const day_45 = day0.setDate(day0.getDate() + 45); //★閲覧用シートをクリアして項目名を(1行目、1列目のセル、から1行目、6列目のセル)まで入れる sh1.clearContents(); sh1.getRange(1,1,1,6).setValues([["班","ID","姓","名","期日1","期日2"]]); //★表から継続中リストを取得する let list = sh.getRange(2,1,lastraw,15).getValues(); list= list.filter(elm => elm[1] == '継続中'); list= list.map(elm => [elm[11],elm[10],elm[12],elm[13],elm[6],elm[14]]); while(n<list.length){ //★もし今日より期日1が30日以内か期日2が45日以内なら if( day_30 >= list[n][4] || day_45 >= list[n][5]){ list[n][4] = Utilities.formatDate(list[n][4],'JST', 'yyyy/MM/dd'); list[n][5] = Utilities.formatDate(list[n][5],'JST', 'yyyy/MM/dd'); c_list = [[list[n][0] + ',' + list[n][1] + ',' + list[n][2] + ',' + list[n][3] + ',' + list[n][4] + ',' + list[n][5]]]; //★転記用に班から期日2までを転記 sh1.getRange(m,1,m,6).setValues(c_list); //★カウント変数mに1加算して次に書き込むときの転記用の行を1行下に指定する m++; } //★カウント関数nに1加算して継続中リスト次の行を見に行く n++; } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

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

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Google Apps Script

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