以前に下記URLで質問し、返答頂いたコードに改良したい。
・https://teratail.com/questions/148362
現象:
添付画像(画像①.png)のように取得するフォルダのファイル内にて[集計]シート(const sheetName = "集計";)が存在しないファイルが存在する場合、
スクリプトを実行すると下記エラーが出てしまい、フォルダ内のファイルの特定シートのセルの値を取得できません。
・[TypeError: null のメソッド「getRange」を呼び出せません。]
追加したい内容
①フォルダのファイル内に[集計]シートが存在するファイルの値のみ取得
※[集計]シートが存在しない場合はスキップするような処理を入れたい。
②添付画像(画像②.png)のように指定したフォルダ(const folderId = "1ZjdNiax9PKRegRA8yfmOoTo4MmYMzyoC"; )内の配下に全てのファイルから集計シートのセルの値を取得したい。
補足:
①はどうにか解決したいです。
②はできたら・・・解決したい内容となります。
とりあえず①は解決したいと思っております。
よろしくお願いいたします。
※※※コメントに記載している内容についての画像③.png※※※
以前に解決して頂いたコードとなります。(/questions/148362)
function getFiles(folderId) {
var files = DriveApp.getFolderById(folderId).getFilesByType(MimeType.GOOGLE_SHEETS);
var ret = []
while(files.hasNext()) {
ret.push(files.next().getId());
}
return ret;
}
//実作業
function last_retu() {
const folderId = "1ZjdNiax9PKRegRA8yfmOoTo4MmYMzyoC"; // テストフォルダのid
const sheetName = "集計";
const targetRange = "H:H";
var files = getFiles(folderId);
var totals = []; //結果が入るやつ
files.forEach(function(element, index, array) { //シートidを繰り返しで処理
var sh = SpreadsheetApp.openById(element).getSheetByName(sheetName);
//H列の最終行を取得
var lr = sh.getRange(targetRange).getLastRow();
totals.push(sh.getRange(lr, 8).getValue());//取得した最終行の(最終行, 列の番号)
});
//以下、質問のまま
//取得した時間の書き出すシート
var spreadsheet = SpreadsheetApp.openById('1wyhhUB5GhFihJ9GdMpyUKgdiph5CqpzawomT-D4GFU4');
var sheet = spreadsheet.getSheetByName('取得した時間を書き込む');
//配列でtestcodeファイル内の「取得した時間を書き込む」シートに書きこむ
var ary = [[]];
for (var i=0; i<totals.length; i++) {
ary[0].push(totals[i]);
}
sheet.getRange(1,1,1,ary[0].length).setValues(ary);
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/25 06:25
2018/10/25 06:38