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

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

詳細はこちら
Google スプレッドシート

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

Q&A

1回答

1551閲覧

スプレッドシートでコピー先シートの最終行に書式ごとペーストしたい

yo_shi

総合スコア0

Google スプレッドシート

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

0グッド

0クリップ

投稿2021/01/06 14:19

前提・実現したいこと

スプレッドシートにおいてシート最終行に
同じファイル内の別のシート特定範囲をペーストしたいです。
#####その際、その範囲の中にチェックボックスプルダウン選択書式が含まれているのですが、その書式設定が反映されずに困っています。

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

https://teratail.com/questions/273411
上記の記事を基に下記のコードを作成しました。

該当のソースコード

function getUsedRowCount(sheet, rowName) { var values = sheet.getRange(rowName + ':' + rowName).getValues(); return values.filter(String).length; } function myFunction() { var ss_copyFrom = SpreadsheetApp.getActiveSpreadsheet(); var ss_copyTo = SpreadsheetApp.openById('ファイルID'); var sheet_copyFrom = ss_copyFrom.getSheetByName('コピー元シート名'); var sheet_copyTo = ss_copyTo.getSheetByName('コピー先シート名'); var copyValue = sheet_copyFrom.getRange('A12:G12').getValues(); var targetRow = getUsedRowCount(sheet_copyTo, 'A') + 1; sheet_copyTo.getRange('A'+targetRow+':G'+targetRow).setValues(copyValue); }

コピー元範囲のC12,E12にプルダウン選択書式、G12にチェックボックスが含まれております。
まだスプレッドシートのスクリプトを始めたばかりで恐縮ですが。
お力添えいただけますと幸いです。

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

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

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

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

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

guest

回答1

0

入力規則は、Range.getDataValidation(s)で取得、Range.setDataValidation(s)で設定出来ます。

Range.getDataValidation()
https://developers.google.com/apps-script/reference/spreadsheet/range#getdatavalidation

Range.setDataValidation()
https://developers.google.com/apps-script/reference/spreadsheet/range#setdatavalidationrule

JavaScript

1var copyValue = sheet_copyFrom.getRange('A12:G12').getValues(); 2var copyFormat = sheet_copyFrom.getRange('A12:G12').getDataValidations(); 3 4var targetRow = getUsedRowCount(sheet_copyTo, 'A') + 1; 5sheet_copyTo.getRange('A'+targetRow+':G'+targetRow).setValues(copyValue); 6sheet_copyTo.getRange('A'+targetRow+':G'+targetRow).setDataValidations(copyFormat);

もっと簡単なRange.copyToを使う方法もあります。

Range.copyTo()
https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination

JavaScript

1const copyFromRange = sheet_copyFrom.getRange('A12:G12'); 2const copyToRange = sheet_copyTo.getRange('A'+targetRow+':G'+targetRow); 3 4copyFromRange.copyTo(copyToRange);

投稿2021/01/07 00:23

draq

総合スコア2577

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

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

yo_shi

2021/01/07 07:49

お忙しい中ご回答ありがとうございます。 例えばRange.copyToメソッドを使う場合、myFunction内に組み込めばよいのでしょうか?
draq

2021/01/08 04:39

そうです。コピー元の Range と コピー先の Range は取得できているので、copyTo を呼ぶだけで色々コピー出来ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問