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

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

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

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

Google Apps Script

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

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

JavaScript

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

3272閲覧

GASを使用したコピー&ペーストについて(文字型)

退会済みユーザー

退会済みユーザー

総合スコア0

Google スプレッドシート

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

Google Apps Script

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

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

JavaScript

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

1クリップ

投稿2020/06/08 10:23

JS,GAS等の知識はほぼないに等しいのですが、よろしくお願いします。

GASでIMPORTXMLで抽出したデータをいくつかのセルに記述し、一日置きに、そのデータを
任意のセルにコピーペーストしたいと思っております。

改善したいのは2点で

1.特定のセルでうまくコピーペーストしてくれない

2.エディタ内で記述が整数での表現だとわかりにくく、文字型と変数を組み合わせてわかりやすくしたい

希望は以下のような形式です。

hetml

1sh.getRange("A1"のようなわかりやすい表現).copyTo(sh.getRange(copyRow,(こちらも変数とともに"B列"のようにわかりやすい表現を使いたい))

以下、現在の状況でして (始まりの行数が中途半端なところから始まっているのは、これまで手動で行っていたためです。)

html

1function myFunction() { 2 3//アクティブなスプレッドシートを取得 4var ss = SpreadsheetApp.getActiveSpreadsheet();  5 6//アクティブなスプレッドシートのアクティブシートを取得 7var sh = ss.getActiveSheet();  8 9var lastRow = sh.getLastRow(); 10var copyRow = lastRow + 1; 11 12//日本 13 14//NOW関数(F列) 15sh.getRange(46,6).copyTo(sh.getRange(copyRow,6),{contentsOnly:true}); 16 17//総感染者数(C3にはIMPORTXML抽出した感染者数が入っています。コピー先:G列) 18sh.getRange(4,3).copyTo(sh.getRange(copyRow,7),{contentsOnly:true}); 19 20//感染者米国比較&一日あたり(H列,I列に関数あり。コピー先:H列) 21sh.getRange(46,8,46,9).copyTo(sh.getRange(copyRow,8)); 22 23//PCR検査数合計(C3にはIMPORTXML抽出したPCR検査数が入っています。コピー先:J列) 24sh.getRange(4,4).copyTo(sh.getRange(copyRow,10),{contentsOnly:true}); 25 26//PCR検査者米国比較&一日あたり(K列,L列に関数あり。コピー先:K列) 27sh.getRange(46,11,46,12).copyTo(sh.getRange(copyRow,11)); 28 29//米国 30sh.getRange(46,15).copyTo(sh.getRange(copyRow,15),{contentsOnly:true}); 31sh.getRange(3,3).copyTo(sh.getRange(copyRow,16),{contentsOnly:true}); 32sh.getRange(46,17,46,18).copyTo(sh.getRange(copyRow,17)); 33sh.getRange(3,4).copyTo(sh.getRange(copyRow,18),{contentsOnly:true}); 34 35}

上記で実行すると47行目、F〜J列までは問題なくコピペされますが、K列以降はなぜか47行目と48行目までコピペされてしまいます。

整数表現を文字型に変えるために調べると
getRange(copyRow.tostring() + '任意のアルファベット')
のような形式で記述するような旨が記載してあったのですが、いまいちよくわかりませんでした。

また、前述のコピペがある列から2重でペーストされる理由もよくわかりませんでした。

アドバイスなどいただけますと幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

現在のコードでコピペの挙動が変なのは、恐らく以下が書き方を誤解されてるからと思います。

sh.getRange(46,11,46,12).copyTo(sh.getRange(copyRow,11)); sh.getRange(46,17,46,18).copyTo(sh.getRange(copyRow,17));

上記の上の例だと
行範囲 46行目から下に 46行取得する = 46行目から92行目までを取得 
列範囲 11列めから右に12列取得する = 11列目から22列目までを取得
という意味です。 つまりは 範囲 K46:V92 をコピーしてることになります。
47行目と48行目までと書かれてますが、たまたま値が入ってるのがその範囲ってだけで実質はK46:V92 を 貼り付けてるわけです。

参考
https://www.yukibnb.com/entry/2019/01/12/210015 

希望することのコードに書かれている通り、 列のアルファベット表記を使いたいなら

getRange() のカッコ内を "A1" といった感じで記述すればOK。
変数を組み合わせるなら 関数でいうとこの & の代わりに + を使えばよいです。

//NOW関数(F列) sh.getRange(46,6).copyTo(sh.getRange(copyRow,6),{contentsOnly:true}); // 以下のように書き換え可能 sh.getRange("F46").copyTo(sh.getRange("F"+ copyRow),{contentsOnly:true});

投稿2020/06/08 12:12

編集2020/06/09 00:40
sawa

総合スコア3002

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

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

退会済みユーザー

退会済みユーザー

2020/06/08 23:12

本当にご親切丁寧にありがとうございます! 後ほど参考にさせていただき見直させていただきます!
退会済みユーザー

退会済みユーザー

2020/07/25 08:14

助かりました。感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問