シートやドキュメントだけなら
ファイルをコピーして指定フォルダに入れる
でできますが
スクリプトファイルもコピーできるようにしたい場合は
スクリプトファイルをコピーして指定したフォルダに入れる
のように工夫が必要です
ここではスクリプトファイルにも対応したコードを書き残しました
「Copy」をクリックしたあとに、作成されたコピーファイルのURLも表示します
こういうUIを作りたい
それを作るコード
コード.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile('index');
}
function copyFileToFolder(file_id, folder_id) {
var file = DriveApp.getFileById(file_id);
var copy_file = makeCopyToMydrive(file);
removeFile(copy_file.getId(), folder_id);
return copy_file.getUrl();
}
function makeCopyToMydrive(file) {
var copy_file_name = "Copy of " + file.getName() + formatDate() + ' ' + Session.getActiveUser().getEmail();
var copy_file = file.makeCopy(copy_file_name);
return copy_file;
}
function removeFile(file_id, folder_id){
var target_folder = DriveApp.getFolderById(folder_id);
var file = DriveApp.getFileById(file_id);
var parent_folder = file.getParents().next();
target_folder.addFile(file);
parent_folder.removeFile(file);
}
function formatDate(){
var date = new Date();
var formated = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss:sss');
return formated;
}
|
index.html
<!DOCTYPE html>
<html>
<body>
Copy file to target folder<br>
<input type="text" id="file_url"> FILE URL<br>
<input type="text" id="folder_url"> FOLDER URL<br>
<button id="bt">Copy</button><br>
<a id="folder_link" target="_blank"></a>
<script>
elem('bt').onclick = btClicked;
function elem(id) {
return document.getElementById(id);
}
function btClicked() {
elem('folder_link').textContent = '';
var file_url = elem('file_url').value;
var folder_url = elem('folder_url').value;
var file_id = file_url.split('/d/')[1].split('/')[0];
var folder_id = folder_url.split('/folders/')[1];
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.withUserObject(folder_url)
.copyFileToFolder(file_id, folder_id);
}
function onSuccess(copy_file_url) {
elem('folder_link').href = copy_file_url;
elem('folder_link').textContent = copy_file_url;
}
function onFailure(e) {
alert([e.message, e.stack]);
}
</script>
</body>
</html>
|
