見出し画像

【Google Apps Script 通信 vol.3】スプレッドシートをコピーしよう!①

こんばんは。きゅうりです。

さて、いよいよ実際のコードを書いていきましょう!

今回はスプレッドシートのコピーです。初めに習得すると今後がスムーズに進むコードばかりを使うので、こちらを選定しました。

やること

上記の複製元となるスプレッドシートを

・売上管理ファイルシートを社員一覧数分コピー

・コピーしたファイル名を【売上管理】社員名とする

まずは社員一覧シートの1番上の山峯さん用ファイルを作成しましょう!

完成版のスクリプトは4に記載してあるので、完成版だけ見れば十分!という方は4を見てみてください(*'▽')

画像1

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);

}

いつも通り、スクリプト実行したときの動画も載せておきます。

おつかれさまでした!

セルの値を取得、ファイルのコピーができるようになりましたね。

次回はいよいよ複数ファイルを一括でコピーするスクリプトを作成していきます。

この記事が気に入ったらサポートをしてみませんか?