Last active
June 22, 2018 11:45
-
-
Save freelze/f040357e4fb3fb4d5111944f455f805a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// if use global variable, it will call create() three times. | |
var sheetID = create() // 84行 | |
/* 目前做到的是:利用create()新增一個Google試算表,並取得sheetID | |
* 因為我有3個Function(爬流量,重置已發訊息量,刪除特定Trigger)會使用到sheetID | |
* 但是執行主程式Start()後, | |
* 會產生多個sheets | |
* 是因為sheetID是global variable,所以create()就call了3次(?) | |
* 請問有什麼方法可以存下sheetID,並給其他function使用? | |
*/ | |
// 主程式 | |
function Start() | |
{ | |
DataflowReminderTriggers(); | |
triggerFordeleteCertainTimeDrivenTriggers(); | |
resetCount_LineNotifyTriggers(); | |
} | |
/*function functionSet(){ | |
var sheetID= create(); | |
DataflowReminder(sheetID); | |
resetCount_LineNotify(sheetID); | |
deleteCertainTimeDrivenTriggers(sheetID); | |
}*/ | |
// 爬流量 | |
function DataflowReminder() { | |
// | |
// (省略) | |
// | |
var SpreadSheet = SpreadsheetApp.openById(sheetID); | |
// | |
} | |
// 爬流量的Trigger,每一分鐘執行一次 | |
function DataflowReminderTriggers() { | |
// Trigger every Minute at 8 o'clock | |
var tID = ScriptApp.newTrigger('DataflowReminder') | |
.timeBased() | |
.inTimezone("Asia/Taipei") // http://joda-time.sourceforge.net/timezones.html | |
.atHour(8) | |
.everyDays(1) | |
.everyMinutes(1) | |
.create(); | |
// store this triggerID in sheet | |
var allTriggers = ScriptApp.getProjectTriggers(); | |
for(var i = 0; i < allTriggers.length; i++) { | |
var cID = allTriggers[i].getUniqueId(); | |
} | |
var SpreadSheet = SpreadsheetApp.openById(sheetID); | |
var Sheet = SpreadSheet.getSheetByName("工作表1"); | |
Sheet.getRange(2, 1).setValue(cID); | |
} | |
// 重置已發訊息量 | |
function resetCount_LineNotify() | |
{ | |
var SpreadSheet = SpreadsheetApp.openById(sheetID); | |
var Sheet = SpreadSheet.getSheetByName("工作表1"); | |
Sheet.getRange(1, 1).setValue(0); | |
} | |
// 重置已發訊息量的Trigger,每天凌晨兩點執行一次 | |
function resetCount_LineNotifyTriggers() { | |
// Trigger every Minute at 2 o'clock | |
ScriptApp.newTrigger('resetCount_LineNotify') | |
.timeBased() | |
.inTimezone("Asia/Taipei") // http://joda-time.sourceforge.net/timezones.html | |
.atHour(2) | |
.everyDays(1) | |
.create(); | |
} | |
// 利用sheet上面存的sheetID,來刪除特定Trigger | |
function deleteCertainTimeDrivenTriggers() { | |
var SpreadSheet = SpreadsheetApp.openById(sheetID); | |
var Sheet = SpreadSheet.getSheetByName("工作表1"); | |
var cID = Sheet.getRange(2, 1).getValue(); | |
// Loop over all triggers | |
var allTriggers = ScriptApp.getProjectTriggers(); | |
for (var i = 0; i < allTriggers.length; i++) { | |
if (allTriggers[i].getUniqueId() == cID) { | |
Logger.log("Delete"); | |
ScriptApp.deleteTrigger(allTriggers[i]); | |
break; | |
} | |
} | |
} | |
// 刪除特定Trigger的trigger,每天凌晨兩點執行一次 | |
function triggerFordeleteCertainTimeDrivenTriggers() { | |
// Trigger every Minute at 2 o'clock | |
ScriptApp.newTrigger('deleteCertainTimeDrivenTriggers') | |
.timeBased() | |
.inTimezone("Asia/Taipei") // http://joda-time.sourceforge.net/timezones.html | |
.atHour(2) | |
.everyDays(1) | |
.create(); | |
} | |
// 找"GAS"資料夾ID,並在該資料夾內建立一個sheet | |
function create(){ | |
var folderId = getFolderID("GAS"); | |
var sheetID = createSpreadsheets(folderId); | |
return sheetID | |
} | |
// 在該資料夾新增一個Google試算表,並回傳該試算表ID | |
// https://productforums.google.com/forum/#!msg/docs/VQcnThJPuY0/0OTD_IqjCwAJ | |
function createSpreadsheets(folderId) { | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var df = DriveApp.getFolderById(folderId); | |
var newSS = SpreadsheetApp.create('Google試算表名稱'); | |
var driveFile = DriveApp.getFileById(newSS.getId()); | |
df.addFile(driveFile); | |
DriveApp.removeFile(driveFile); | |
return newSS.getId(); | |
}; | |
// 找資料夾名稱,回傳id | |
// https://googleappsscriptdeveloper.wordpress.com/2017/03/04/how-to-find-your-google-drive-folder-id/ | |
function getFolderID(folderName) | |
{ | |
var folders = DriveApp.getFolders(); | |
while (folders.hasNext()) { | |
var folder = folders.next(); | |
if(folder.getName() == folderName) | |
{ | |
return folder.getId(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment