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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

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

Q&A

解決済

2回答

2793閲覧

【GAS】スプレッドシートのセルをコピーして別シートのセルにペーストする。

Silver_GEL

総合スコア9

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

JavaScript

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

0グッド

1クリップ

投稿2021/09/21 08:12

前提・実現したいこと

実行1回目:
①シートAのB5をシートBのA1にコピペする。
②シートAのD5をシートBのB1にコピペする。
③シートAのD3をシートBのC1にコピペする。
④シートAのB3をシートBのD1にコピペする。

実行2回目:
①シートAのB5をシートBのA2にコピペする。
②シートAのD5をシートBのB2にコピペする。
③シートAのD3をシートBのC2にコピペする。
④シートAのB3をシートBのD2にコピペする。

実行3回目:
①シートAのB5をシートBのA3にコピペする。
②シートAのD5をシートBのB3にコピペする。
③シートAのD3をシートBのC3にコピペする。
④シートAのB3をシートBのD3にコピペする。

実行4回目以降も同様に1行ずらしてコピペしたいです。

該当のソースコード

シートAのA2:D2のセルをシートBの1行目にコピぺするコードをここに書きます。(現在のコード)

GAS

1function myFunction(){ 2var spreadsheet = SpreadsheetApp.getActive(); 3spreadsheet.getRange('A2:D2').activate(); 4spreadsheet.setActiveSheet(spreadsheet.getSheetByName('B'); 5spreadsheet.getRange('\'A\'!A2:D2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false); 6spreadsheet.getRange('A1:D1').clearDataValidations(); 7};

試したこと

マクロを記録する機能を活用したがヒントが得られなかった。

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

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

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

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

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

guest

回答2

0

ベストアンサー

マクロを記録する機能を活用 だけではなく、やりたいことを言葉にして検索すると参考になるサイトが色々見つかりますよ。

質問を読んだ限りの憶測ですが、

「シートAのB5、D5、D3、B3 の値 を シートBの 最終行に横並びに追記していきたい」

ってことじゃないでしょうか?
(よくある、その時の入力データをログとして別シートに残したい的な)

であれば、以下のような書き方で可能です。

GAS

1function copype(){ 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const data = ss.getSheetByName("シートA").getRange("B3:D5").getValues(); 4 ss.getSheetByName("シートB").appendRow([data[2][0],data[2][2],data[0][0],data[0][2]]); 5}

まったく違ったらすいません。

投稿2021/09/23 06:31

編集2021/09/23 06:33
sawa

総合スコア3002

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

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

Silver_GEL

2021/09/23 10:03

正確に実装したい機能を言語化できるように様々な記事を読んで知識を身につけたいと思います。ありがとうございます。 エラーなく想像していた通りの処理になりました。ありがとうございます!!!!!
sawa

2021/09/23 11:18

書き込みの後ろ2つはD3、B3の順でしたね。失礼しました。 data[0][0],data[0][2]の順番を入れ替え下さい。
guest

0

function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("A");
var sheet2 = ss.getSheetByName("B");
// Aがコピー元のシート名。Bがコピー先のシート名。半角英数注意。
var dateA = sheet1.getRange("B5").getValue();
var dateB = sheet1.getRange("D5").getValue();
var dateC = sheet1.getRange("D3").getValue();
var dateD = sheet1.getRange("B3").getValue();
// var date○ = sheet1.getRange("指定したいセル").getValue();
// で指定したいデータを追加可能
for(var i=1; i<=4; i++){
// i<=4 の4が繰り返しデータを貼り付ける回数。
sheet2.getRange(1,i).setValue(dateA);
sheet2.getRange(2,i).setValue(dateB);
sheet2.getRange(3,i).setValue(dateC);
sheet2.getRange(4,i).setValue(dateD);
// sheet2.getRange(○,i).setValue(date○)
// var date○ とか作ったらこの形をここの場所に増やす。
}
}
↑ここから上全部コピペして実行。
とかどうでしょうか。
呼び出し回数が多いので実行速度はあまり出ませんが、簡単編集できると思います。

投稿2021/09/22 18:45

sakosan

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問