teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Q&A

解決済

1回答

1584閲覧

【GAS】複数列、複数行のセルの値を取得できない

-k410h2-

総合スコア3

Google Apps Script

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

0グッド

0クリップ

投稿2022/06/01 08:41

0

0

お力添えをお願い致します。

実現したいこと

「取得」シートから「履歴まとめ」シートへ特定範囲のデータを1日1回程度蓄積していくことが目的です。

現状

複数列、複数行を取得しようとすると一行目しか取得できない状態です。

【範囲】
指定範囲▶A3:K12

取得結果▶A3:A12

書き込んだソースコード

html

1//取得するスプレッドシートを指定。スプレッドシートのURLのID部分を指定する。 2var ssFile = SpreadsheetApp.openById("1truKslswGuJupbMU13tuG2MvbjqzNNigmM8KEVJJfEQ"); 3//値を取得する対象のシートを指定 4var baseSheet = ssFile.getSheetByName("取得"); 5//記録するシートを指定 6var saveSheet = ssFile.getSheetByName("履歴まとめ"); 7 8function myFunction() { 9 10} 11 12//定期的に実行させる関数 13function MainFrame() { 14 //「取得」の3行目1列目から、10行分11列分のセル(A3からK12の範囲) 15 var array = baseSheet.getRange('A3:K12').getValues()[0]; 16 //今の日時を取得して指定したフォーマットに変換 17 var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm'); 18 array.unshift(date); 19 20 //最終行に配列データを追加で記録する 21 saveSheet.appendRow(array); 22}

試行、調査したこと

・getValues()[0];の配列
・getRange('A3:K12')をgetRange(3,1,10,11)へ変更

私が「配列」の理解をできていないのだと思います。

複数列、複数行を取得して毎日蓄積していく形が理想です。

お力添えいただけますと幸いです。。。

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

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

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

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

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

itagagaki

2022/06/01 09:20 編集

getValues() が二次元配列を返しますが、 getValues()[0] を参照している => 返された二次元配列の1つめの要素(A3からA12までの配列)を参照している、ということです。 getValues()[1] がB3~B12 getValues()[2] がC3~C12 ということですね。
-k410h2-

2022/06/01 09:38

仕組みが理解できました! ありがとうございます!!
guest

回答1

0

ベストアンサー

gs

1//定期的に実行させる関数 2function MainFrame() { 3 //「取得」の3行目1列目から、10行分11列分のセル(A3からK12の範囲) 4 var array = baseSheet.getRange('A3:K12').getValues(); 5 //今の日時を取得して指定したフォーマットに変換 6 var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm'); 7 8 array.forEach(function(arr) { 9 arr.unshift(date) 10 //最終行に配列データを追加で記録する 11 saveSheet.appendRow(arr) 12 }) 13}

getValues()[0] としていると、最初の一行(A3~K3)しか取得できません。
[0]をつけずに、全て取得

取得したarrayは2次元配列になっているので、forEachでループするようにすれば、良いかと思います。

取得シート履歴シート、実施前履歴シート、実施後履歴シート、再実施後
イメージ説明イメージ説明イメージ説明イメージ説明

投稿2022/06/01 09:26

編集2022/06/01 09:30
k.a_teratail

総合スコア845

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

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

-k410h2-

2022/06/01 09:40

ありがとうございます! こちらで無事に動作確認できました! 助かりましたorz
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問