【Google Apps Script 通信 vol.3】スプレッドシートをコピーしよう!①
こんばんは。きゅうりです。
さて、いよいよ実際のコードを書いていきましょう!
今回はスプレッドシートのコピーです。初めに習得すると今後がスムーズに進むコードばかりを使うので、こちらを選定しました。
やること
上記の複製元となるスプレッドシートを
・売上管理ファイルシートを社員一覧数分コピー
・コピーしたファイル名を【売上管理】社員名とする
まずは社員一覧シートの1番上の山峯さん用ファイルを作成しましょう!
完成版のスクリプトは4に記載してあるので、完成版だけ見れば十分!という方は4を見てみてください(*'▽')
1,複製元スプシからスクリプトエディタを開く
先ほど共有した複製元スプシは閲覧権限になっているので、コピーしてから活用してください。(もちろんご自身でファイルを用意いただいても問題ありません)
2,複製元スプシをコピー
コードは下記の通りなのですが、
ここに○○してください!と記載してある3か所は必ず更新しないとスクリプトが動きませんので、書き換えてから実行してください(*'▽')
任意のスプレッドシートID/フォルダID/ファイル名を””で囲んであげてください。(ここではファイル名は何でも良いです。山峯さんの名前を入れるのは次のトピックで解説します)
function myFunction() {
// 複製元となるスプレッドシートをIDで指定
var templateFile = DriveApp.getFileById("ここにスプレッドシートIDを入れてください!");
// コピーしたファイルを保存するフォルダをIDで指定
var OutputFolder = DriveApp.getFolderById("ここにフォルダIDを入れてください!");
// 複製元スプシをコピー
templateFile.makeCopy("ここにコピー後のファイル名を入れてください!", OutputFolder);
}
<補足>
①スプレッドシートIDとは
スプレッドシートURLの
https://docs.google.com/spreadsheets/d/ここの文字列がID/edit#gid=xxxx
例えば下記の場合だと、ABCDEがIDです。
https://docs.google.com/spreadsheets/d/ABCDE/edit#gid=2106901759
②フォルダIDとは
フォルダURLの
https://drive.google.com/drive/folders/ここの文字列がID
例えば下記の場合だとFGHIJKがIDです。
https://drive.google.com/drive/folders/FGHIJK
3,ファイル名に使用する氏名を取得(セルの値を取得)
コードは下記の通りです。それぞれ解説をコメントアウトしています。
function myFunction() {
// 1,現在開いているスプレッドシートにアクセス
// (操作するには、まずスプレッドシート本体にアクセスすることが必要)
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// 2,社員一覧シートにアクセス
// (1でアクセスしたスプレッドシート本体から、シートにドリルダウンする)
var sheet = spreadsheet.getSheetByName('社員一覧');
// 3,値を取得したいセル範囲を指定
// (山峯さんの名前はB3セルにあるため、B3を指定)
var range = sheet.getRange('B3');
// 4,値を取得(B3セル:山峯 昭俊が取得できる)
var name = range.getValue();
// 5,Logを確認して、ここまで正しく出来ているか確認してみる
Logger.log(name);
}
先ほどスクリプトエディタは複製元スプシから開いてください、と伝えたのはここで、現在開いているファイルの社員一覧シートにアクセスしているからです。
(現在開いてないスプレッドシートにもIDからアクセスすることは可能です。気になる方はGoogle先生で調べてみましょう!)
スクリプト実行したときの動画も載せておきます。
4,複製後のファイル名が”【売上管理】|山峯 昭俊”になるようにコピーする
2,3で作成したスクリプトを組み合わせればすぐに完成です!
3で取得した氏名を元にファイル名の変数*を宣言して、コピーの際のファイル名指定に先ほどの変数*を指定すればばっちりです。
function myFunction() {
// 再掲|3,ファイル名に使用する氏名を取得のスクリプト
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('社員一覧');
var range = sheet.getRange('B3');
var name = range.getValue();
// ファイル名を生成(ファイル名:【売上管理ファイル】○○○○)
var filename = "【売上管理】" + name
// 再掲|2,複製元スプシをコピーのスクリプト ★ここに上段で取得したnameの値を、ファイル名に指定します
var templateFile = DriveApp.getFileById("ここにスプレッドシートIDを入れてください!");
var OutputFolder = DriveApp.getFolderById("ここにフォルダIDを入れてください!");
templateFile.makeCopy(filename, OutputFolder);
}
いつも通り、スクリプト実行したときの動画も載せておきます。
おつかれさまでした!
セルの値を取得、ファイルのコピーができるようになりましたね。
次回はいよいよ複数ファイルを一括でコピーするスクリプトを作成していきます。
この記事が気に入ったらサポートをしてみませんか?