🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google

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

Q&A

2回答

500閲覧

コピー箇所の指定についてGoogle Apps Script

sasaka0222

総合スコア4

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google

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

0グッド

0クリップ

投稿2019/10/26 14:29

前提・実現したいこと###

Google Apps Script について

forを使用して
連続して別シートから別シートへ
数値を出力できるようにしたいのですが

for(var i = 6; i <= lastRow; i++) {
//Logger.log(sheet2.getRange(i, 2).getValue());
sheet2.getRange(1+i, 1, 1, 3).copyTo(sheet3.getRange(1+i, 1))
}
}

上記のようにおこなっったところ
copyToがこれだとA列の7行目に出力されてしまいました
A列の一行目に情報を持ってくるにはどうすればよろしいでしょうか?

forを使用したまま実行を行いたいです。

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

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

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

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

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

papinianus

2019/10/26 14:38

全部のコードを示さないのであれば、そこでやりたいことを書きましょう。何行目のどこからどこをを1行目に持っていきたいのでしょうか。
guest

回答2

0

for 文内のiがいくつなのか、カウントしたらどうなるのかを考えてみると単純な話で、実際にカウントしていきますと。

GoogleAppScript

11回目 2sheet2.getRange(1+6, 1, 1, 3).copyTo(sheet3.getRange(1+6, 1)) 32回目 4sheet2.getRange(1+7, 1, 1, 3).copyTo(sheet3.getRange(1+7, 1)) 53回目 6sheet2.getRange(1+8, 1, 1, 3).copyTo(sheet3.getRange(1+8, 1)) 7

これがどこのRangeをとっているか。A1:C2表記でみてみますと。

GoogleAppScript

11回目 2sheet2.getRange('A7:C7').copyTo(sheet3.getRange('A7')) 32回目 4sheet2.getRange('A8:C8').copyTo(sheet3.getRange('A8') 53回目 6sheet2.getRange('A9:C9').copyTo(sheet3.getRange('A9')) 7

となります。
まずは、getRange元とcopyTo先を同じ位置にしたくなければ違う変数を使うところからですね。
あとpapinianus様をおっしゃっているとおり
for文の中に.getRange.copyToやら.getValue.setValueはデータ件数が少ない前提ならいいですが。
そうじゃないのであればいずれ実行時間問題行きつきますので要注意です。

投稿2019/10/28 01:31

takaD

総合スコア315

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

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

0

javascript

1for (var i = 6; i <= lastRow; i++) { 2//Logger.log(sheet2.getRange(i, 2).getValue()); 3 sheet2.getRange(i, 1, 1, 3).copyTo(sheet3.getRange(i - 5, 1)) 4}

forを使用したまま実行を行いたいです

やめたほうがいいです。いずれ実行時間が長くなりすぎて中断させられます。そもそもこの問題もforでやろうとするからsheet3の開始行を固定にできないことが原因なのでマッチポンプです。

投稿2019/10/26 14:37

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問