前提・実現したいこと
初投稿のため、分り難いところが多々あるかと思われますが宜しくお願い致します。
ここに質問の内容を詳しく書いてください。
やっていること:
①ファイルを指定
②[集計]シートを指定
③指定した[集計]シートのH列の値を取得
④取得した時間を別のシートに配列で書きだす
やりたいこと:
記載したコードの①~③(3~30行目)を繰り返し処理等ににしたい。
現状:一つ一つkey入力 → ファイルのシート指定 → 最終行のH列の値を取得となっていて手入力に手間がかかっている。
手作業と然程時間が変わらない状態になってしまっている。
補足:
取得するファイルの数は変動します。
(必ず5つのファイルを取得するわけではない。1つの場合もあれば、20個くらいの場合もある)
発生している問題・エラーメッセージ
複数のファイルid(key)を配列で持たせ、
△△△△△△の部分に格納したがエラーになってしまう。
var s1 = SpreadsheetApp.openById('△△△△△△');
初心者であるため、繰り返し処理をどう書けば良いのかわからない。
該当のソースコード
GAS
1function last_retu(lr){ 2 //テストフォルダ内のファイルを取得 3var s1 = SpreadsheetApp.openById('196hx3G3vDoeaBzAdI0ByOnafZubXrsDnT_qzWWDF6L0'); 4var s2 = SpreadsheetApp.openById('1OPMUHsbJNG8SIxGzjmGhsbE1O-DfD4VKtRM2d_EtVmM'); 5var s3 = SpreadsheetApp.openById('1aMS5nGzI--VbuhtkLfACpebCaHxT2gudnOfur_h8gmw'); 6var s4 = SpreadsheetApp.openById('1cTBHqgWCS62mc2guMmhD2UEMOo2VNSscbWgVbJdphz4'); 7var s5 = SpreadsheetApp.openById('1rfN28O8NWp-3wMQmyViQdoC5atyzXyYiPbDT7I2AlEw'); 8 9 //特定のシート名(集計)を指定する 10var sht1 = s1.getSheetByName('集計'); 11var sht2 = s2.getSheetByName('集計'); 12var sht3 = s3.getSheetByName('集計'); 13var sht4 = s4.getSheetByName('集計'); 14var sht5 = s5.getSheetByName('集計'); 15 16 //H列の最終行を取得 17var lr = sht1.getRange("H:H").getLastRow(); 18var range1 = sht1.getRange(lr, 8).getValue();//取得した最終行の(最終行, 列の番号) 19 20var lr = sht2.getRange("H:H").getLastRow(); 21var range2 = sht2.getRange(lr, 8).getValue();//取得した最終行の(最終行, 列の番号) 22 23var lr = sht3.getRange("H:H").getLastRow(); 24var range3 = sht3.getRange(lr, 8).getValue();//取得した最終行の(最終行, 列の番号) 25 26var lr = sht4.getRange("H:H").getLastRow(); 27var range4 = sht4.getRange(lr, 8).getValue();//取得した最終行の(最終行, 列の番号) 28 29var lr = sht5.getRange("H:H").getLastRow(); 30var range5= sht5.getRange(lr, 8).getValue();//取得した最終行の(最終行, 列の番号) 31 32 //上記(3~30行目の処理)で取得した時間(range1~5)を配列にまとめただけ。 33var gettotaltimes = [range1,range2,range3,range4,range5]; 34 35 //取得した時間の書き出すシート 36var spreadsheet = SpreadsheetApp.openById('1wyhhUB5GhFihJ9GdMpyUKgdiph5CqpzawomT-D4GFU4'); 37var sheet = spreadsheet.getSheetByName('取得した時間を書き込む'); 38 39 //配列でtestcodeファイル内の「取得した時間を書き込む」シートに書きこむ 40 var ary = [[]]; 41 for (var i=0; i<gettotaltimes.length; i++) { 42 ary[0].push(gettotaltimes[i]); 43 } 44 sheet.getRange(1,1,1,ary[0].length).setValues(ary); 45 46} 47 48
試したこと
まだ初心者のためどうすれば良いのか見当がついていないレベルです。
すいません。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/25 12:01