【Google Apps Script 通信 vol.3】スプレッドシートをコピーしよう!番外編|不要なシートを非表示にしよう
こんばんは。きゅうりです。
前回の記事を書きながら、そういえば複製元ファイルに社員一覧シートを入れたままだったと気づきました。(実際に各社員に配布する場合は、きっと不要なシートになりますよね。)
良い機会なので、不要なシートを非表示にする方法を学びましょう!
前回までの記事はこちら
1.シート非表示
シートを非表示するためには・・・たったこれだけです。
sheet.hideSheet();
前回までのスクリプトの冒頭に差し込みましょう。(4行目が該当です)
function myFunction() {
// 社員一覧シートにアクセス
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('社員一覧');
// 社員一覧シートを非表示 ★ここを追加
sheet.hideSheet();
// 氏名データテーブルの最終行を取得
var lastrow = sheet.getLastRow();
// 繰り返し処理
for (var i = 3; i <= lastrow; i++){ //3から最終行まで繰り返す、iは1ずつ増やす(B3セルから取得したい値なので、iは3から始める)
var range = sheet.getRange("B"+i); //値を取得したい範囲を指定
var name = range.getValue(); //指定した範囲の値を取得
// ファイル名を生成(ファイル名:【売上管理ファイル】○○○○)
var filename = "【売上管理】" + name
// 複製元スプシをコピー
var templateFile = DriveApp.getFileById("1d48sZOAdz5CFpyTBD7OY62b0KYrFserGT48rRpKiKSI");
var OutputFolder = DriveApp.getFolderById("1hSCJTDF27-SA__0yd26Zf3zbvbhHEkom");
templateFile.makeCopy(filename, OutputFolder);
// 社員一覧シートに完了を書き込む
var range = sheet.getRange("C"+i).setValue("完了");
}}
複製前に非表示にするのであれば、手動で1回非表示にしちゃってもいいのですが…(笑)今回は学びのために(*'▽')
2.どうして繰り返し処理の中に非表示を入れないの?(GASのタイムリミットの話)
環境構築不要かつ無料!で使用できるGASですが、実は1回のスクリプト実行時間にはタイムリミットがあるのです。(ウルトラマン的な感じで)
契約内容によるのですが多くの方の場合は上限6分です。
そう、6分以内に処理を完了させないといけない。
(terateilの回答だとBusiness か Enterprise の契約にすれば30分に伸びるらしい。)
繰り返し処理の中に非表示を入れると繰り返し回数分、非表示を実行することになるので、その分実行時間が伸びてしまいます。
そのため1回の非表示で済むように、前段部分に差し込みました。
おまけ|処理を高速化する方法
なにやら配列の知識を手に入れると、より高速化できるようです。
ただ配列を扱うためには配列概念の習得から必要なので、私はいったん保留にしてます…(笑)
下記サイトに解説が載っているので、気になる方は参考にしてみるとよいかも!
ではまた次回!
この記事が気に入ったらサポートをしてみませんか?