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

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

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

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

Q&A

解決済

1回答

4464閲覧

Google Apps Script 最終行までデータを拾って、別のシートの最終行から一個したの行に貼り付ける

pon244

総合スコア59

Google Apps Script

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

0グッド

0クリップ

投稿2021/06/12 08:52

編集2021/06/12 11:04

【したいこと】
SheetAのデータをコピーして、Sheet bのすでにデータが入ってる一個したからデータを入れたい。

【シートAイメージ】
イメージ説明
【シートBイメージ】
イメージ説明

【したいことのシート結果】
イメージ説明

【実際の実行結果】
イメージ説明

【Code】

function copy(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet_copyFrom = ss.getSheetByName('SheetA');  // コピー範囲取得 var copyRange = sheet_copyFrom.getRange("A2:C100"); //Paste 範囲 var sheet_copyTo = ss.getSheetByName('SheetB'); var copyValues = copyRange.getValues(); var lastRow = ss.getLastRow(); sheet_copyTo.getRange(lastRow + 1, 1).setValue(copyValues); }

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

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

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

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

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

gas.engine

2021/06/12 10:53

タグとタイトルはGoogle Apps Scriptでお願いいたします。
guest

回答1

0

ベストアンサー

こちらで作動しました。

GoogleAppsScript

1function copy(){ 2 3 var ss = SpreadsheetApp.getActiveSpreadsheet(); 4 5 //SheetA データの取得 6 var sheet_copyFrom = ss.getSheetByName('SheetA'); 7 //ざっくり範囲をとって、見出し行を取り除いています 8 var copyRange = sheet_copyFrom.getDataRange(); 9 var temp = copyRange.getValues(); 10 temp.shift(); 11 var copyValues = temp; 12 13 //SheetB データの表示 14 var sheet_copyTo = ss.getSheetByName('SheetB'); 15 var lastRow = sheet_copyTo.getLastRow(); 16 sheet_copyTo.getRange(lastRow + 1, 1, copyValues.length, 17 copyValues[0].length).setValues(copyValues); 18 19} 20

getDataRange()を使わない場合、getLastRow()とgetRange(行,列,行数,列数)を活用すれば同様にできると思います。

投稿2021/06/12 11:20

gas.engine

総合スコア608

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

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

pon244

2021/06/12 11:31

できました!ありがとうございます!!
gas.engine

2021/06/12 11:35

どういたしまして????
gas.engine

2021/06/12 11:37

解決済みにしていただけますと幸いです。
pon244

2021/06/12 11:45

ベストアンサーにしました! あともし知ってたら教えて欲しいのですが、 貼り付ける先に色々なデータがあった時に、 A列の一番下のプラス1に貼り付けるとかも指定できますか?
pon244

2021/06/12 11:48

A, B, C列とあった時に、 A列の最後の行のしたに入れるという意味です。 AとBとCが仮にラストの値が違う場合
gas.engine

2021/06/12 11:55

ありがとうございます。 >sheet_copyTo.getRange(lastRow + 1, 1, copyValues.length, copyValues[0].length).setValues(copyValues); >A列の一番下のプラス1に貼り付けるとかも指定できますか? このgetRange(a, b, c, d)が既にそのように指定されています。 a に、lastRow + 1を入れることで、最終行+1になります。 b は、列数なので1の場合A列です。 c は、範囲の行数、 d は、範囲の列数です。 セットする二次元配列と同じサイズの範囲(行数・列数)を指定しないとエラーになります。
pon244

2021/06/12 12:13

ありがとうございます!何度も聞いてすいません! 最後に、 コピーする範囲指定でA3:C10で空白も選んでしまっているのですが、 こちらもGetlastRowでA3から始まってCの最後の行までってできますか? var copyRange = sheet_copyFrom.getRange("A3:C10");
gas.engine

2021/06/12 12:37

C列の最後の行までは可能です。 >var copyRange = sheet_copyFrom.getRange("A3:C"); Cだけにします。 ただし、巨大な二次元配列になるのであまり得策ではないと思います。 getDataRange()であれば、SheetAのデータのある範囲を勝手に適切なサイズで考えてくれます。 またgetLastRow()はセルに値がある最終行を取得するだけなので、これでCの最終行を得られるわけではないです。
pon244

2021/06/12 12:43

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問