-
Notifications
You must be signed in to change notification settings - Fork 0
/
drive.gs
98 lines (84 loc) · 3.94 KB
/
drive.gs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/**
* eroge_releaseフォルダ配下のフォルダ配下に新規でスプレッドシートを作成する
*
* @param {String} [folderName] - フォルダ名
* @param {String} [spreadSheetName] - スプレッドシートファイル名
* @return {Files resource} ref:https://developers.google.com/drive/api/v2/reference/files#resource
*/
function createSpreadSheet(folderName, spreadSheetName) {
var erogeReleaseBotFolder = getErogeReleaseBotFolder();
// 作成対象のフォルダが存在していたら削除する
var alreadyCreatedFolder = getFolderForErogeReleaseBot(folderName);
if (alreadyCreatedFolder != '') erogeReleaseBotFolder.removeFolder(alreadyCreatedFolder);
// フォルダを新規で作成する
// NOTE: 理由はよくわからないがなぜか作成後のフォルダもう一度検索しないと正しく取得できなかったOrz
// Folderオブジェクト経由だと正しく取得できない
createFolder(folderName);
var targetFolder = getFolderForErogeReleaseBot(folderName);
var result = Drive.Files.insert({
"title": spreadSheetName,
"mimeType": "application/vnd.google-apps.spreadsheet",
"parents": [{"id": targetFolder.getId()}]
});
return result;
}
/**
* eroge_releaseフォルダを取得する
*
* @return {Folder} eroge_releaseフォルダ
*/
function getErogeReleaseBotFolder() {
// フォルダは1件のみ取得されることを想定しているコードです
var folders = DriveApp.getFoldersByName('eroge_release');
var erogeReleaseBotFolder = folders.next();
return erogeReleaseBotFolder;
}
/**
* eroge_releaseフォルダ配下のフォルダを名前で取得する
* 取得できなかった場合は空文字を返す
*
* @param {String} [folderName] - フォルダ名
* @return {Folder} eroge_releaseフォルダ配下のフォルダ
*/
function getFolderForErogeReleaseBot(folderName) {
var erogeReleaseBotFolder = getErogeReleaseBotFolder();
var folderForErogeReleaseBot = erogeReleaseBotFolder.getFoldersByName(folderName);
return folderForErogeReleaseBot.hasNext() ? folderForErogeReleaseBot.next() : '';
}
/**
* eroge_releaseフォルダ配下にフォルダを作成する
*
* @param {String} [folderName] - フォルダ名
* @return {Folder} 作成したFolder
*/
function createFolder(folderName) {
var erogeReleaseBotFolder = getErogeReleaseBotFolder();
erogeReleaseBotFolder.createFolder(folderName);
return erogeReleaseBotFolder;
}
/**
* eroge_releaseフォルダ配下のスプレッドシートをスプレッドシート名で取得する
* 取得できなかった場合は空文字を返す
*
* @param {Folder} [folder] - 検索対象のフォルダオブジェクト
* @param {String} [spreadSheetName] - スプレッドシート名
* @return {SpreadSheet} 検索できたSpreadSheetオブジェクト
*/
function getSpreadSheetForErogeReleaseBot(folder, spreadSheetName){
var files = folder.searchFiles('title = "' + spreadSheetName + '"');
var targetFile = files.hasNext() ? files.next() : '';
if (targetFile === '') return '';
return SpreadsheetApp.openById(targetFile.getId());
}
// スプレッドシート作成メソッドのデバッグ用
function TestCreateSpreadSheet() {
createSpreadSheet("201911", "201911");
createSpreadSheet("201912", "201912");
createSpreadSheet("202001", "202001");
}
// eroge_releaseフォルダ配下のスプレッドシートを取得するメソッドのデバッグ用
function TestGetSpreadSheetForErogeReleaseBot(){
Logger.log('201911のスプレッドシートのID:' + getSpreadSheetForErogeReleaseBot(getFolderForErogeReleaseBot('201911'), '201911').getId());
Logger.log('201912のスプレッドシートのID:' + getSpreadSheetForErogeReleaseBot(getFolderForErogeReleaseBot('201912'), '201912').getId());
Logger.log('202001のスプレッドシートのID:' + getSpreadSheetForErogeReleaseBot(getFolderForErogeReleaseBot('202001'), '202001').getId());
}