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

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

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

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

JavaScript

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

1983閲覧

Google Apps Scriptで、シートの最終行が取得できない

nassawa

総合スコア14

Google Apps Script

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

JavaScript

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/06/04 03:18

編集2019/06/04 03:35

初めまして。
今回が初質問です。

プログラミングは普段はJavascriptなどを写経を中心に学習している初心者です。
数日前から初めてGoogleAppsScriptを触り、
調べながら自分なりに動くものを書こうとしたのは今回が初めてです。

前提・実現したいこと

GASでスプレッドシートから、最終行(列は複数列です)を取得して、別のスプレッドシートに貼り付けていきたい。

発生している問題・エラーメッセージ

最終行だけでなく、二行目以降全ての行をコピーしてします。

該当のソースコード

GoogleAppsScript

ソースコード

function copyValues() {

//コピー元の指定(URL)
var ss_copyFrom = SpreadsheetApp.openByUrl('URL');
//コピー元のシートの指定
var sheet_copyFrom = ss_copyFrom.getSheetByName('シート1');

//コピー範囲の指定
var copyValue = sheet_copyFrom.getRange('A2:C2').getValues();
var lr = sheet_copyFrom.getLastRow();
var lc = sheet_copyFrom.getLastColumn();
var copyRange = sheet_copyFrom.getRange(1,1,lr,lc);

//コピー先の指定(ID)
var ss_copyTo = SpreadsheetApp.openById('ID');
var sheet_copyTo = ss_copyTo.getSheetByName('シート1');
var lastRow = sheet_copyTo.getLastRow();
var lastRow1 = lastRow + 1;

//吐き出し
ss_copyTo.getRange('A2:C2').setValues(copyValue);
var copyValues = copyRange.getValues();
sheet_copyTo.getRange(lastRow1,1,lr,3).setValues(copyValues);
}

試したこと

コピー範囲の指定をいろいろと試してみるのですが、うまくいきません。

拙い質問で恐縮ですが、お教えいただける方がいらっしゃれば助かります。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

lcが3列ではないのでは無いでしょうか?
sheet_copyTo.getRange(lastRow1,1,lr,3).setValues(copyValues);
部分、3列に指定するとcopyValuesの列数(=lc)と一致しないと貼り付けはできません。

投稿2019/06/04 05:24

hiroshi0240

総合スコア640

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

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

nassawa

2019/06/04 08:12

A〜C列までの3列の範囲だったので、 sheet_copyTo.getRange(lastRow1,1,lr,3)にしていました。 3の部分をlcに直しても、同じように最終行だけでなく全てがコピーされてしまいました…。
hiroshi0240

2019/06/04 08:21

ん?すべてコピーしたいんじゃないんですか? コードはcopyRangeで指定した範囲の値をとってきてますから、copyRangeで(1,1,lr,lc)としていれば、1行目、1列目から最終行まで、最終列までの範囲になりますよ。最終行だけ指定したければ、最終行1列目から1行最終列まで(lr,1,1,lc)と書いてください。
nassawa

2019/06/04 08:53

教えていただいたコードで無事動きました! 最終行の一列だけをコピーしたかったのでした。 最終列の範囲の指定を見て、ようやく範囲指定の表記の仕方が理解できたように思います。 ど素人の質問にお付き合いいただき本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問