这是我在 v8 之前编写的一个真正的旧脚本:
这里的内容可能不是脚本的一部分,但我已经包含了所有内容。
代码.gs:
var GStorage = '';
var folderID = "Storage Folder Id"
var GFlag = 0;
function onOpen()
{
var ui = SpreadsheetApp.getUi();
ui.createMenu('My Tools')
.addItem('My Drive Directory Listing','runtraverseFolder')
.addItem('Clear Dirlist','clearDirlist')
.addToUi();
}
function runtraverseFolder()
{
var dirlist = loadDirlist();
var html1 = '<html><head></head><body><div class="cntrls"><input type="button" value="Exit" onClick="google.script.host.close()" /> \
<input type="button" value="Delete Cached Listing & Start Over" onClick="google.script.run.clearDirlist();" /></div><br />';
var html2 = '</div><div class="cntrls"><input type="button" value="Exit" onClick="google.script.host.close()" />\
<input type="button" value="Delete Cached Listing & Start Over" onClick="google.script.run.clearDirlist();" />\
<br /></body></html>';
if(dirlist)
{
dispStatus('Stored MyDrive Directory List', html1 + GStorage + html2, 800, 600);
}
else
{
GStorage ='<style>\
.tab0{margin-left:0px;font-weight:750;}\
.tab1{margin-left:50px;font-weight:750;}\
.tab2{margin-left:100px;font-weight:750;}\
.tab3{margin-left:150px;font-weight:750;}\
.tab4{margin-left:200px;font-weight:750;}\
.tab5{margin-left:250px;font-weight:750;}\
.tab6{margin-left:300px;font-weight:750;}\
.file{color:#d81840;}\
.contrls{padding:10px 10px 10px 10px;}\
.timestmp {width: 200px;margin-left:5px;padding:10px 0px 5px 50px;background-color:rgba(121, 25, 0, 0.36);color:white;}</style>';
GFlag = 0;
traverseFolder(DriveApp.getRootFolder());
saveDirlist();
dispStatus('Current MyDrive Directory Listing', html1 + GStorage + html2, 1000, 600);
}
}
function traverseFolder(folderObj)
{
GStorage += '<p class="tab' + GFlag++ + '">' + folderObj.getName() + ', <span style="color:black;font-size:8px;"><a href="https://drive.google.com/open?id='+ folderObj.getId() +'" target="_blank" > Open</a></span></p>';
var subs = folderObj.getFolders();
var files = folderObj.getFiles();
if(files)
{
while(files.hasNext())
{
var fi = files.next();;
GStorage += '<p class="tab' + GFlag + ' file">' + fi.getName() + ', <span style="color:black;font-size:8px;"><a href="https://drive.google.com/open?id='+ fi.getId() +'" target="_blank" > Open</a></span></p>';
}
}
while (subs.hasNext())
{
traverseFolder(subs.next());
}
GFlag--;
}
function saveDirlist()
{
var filename = 'CurrentDirectoryListing';
var fldr = DriveApp.getFolderById(folderID);
var fldrname = fldr.getName();
var file = fldr.getFilesByName(filename);
var targetFound = false;
var timeStamp = '<div class="timestmp">' + Utilities.formatDate(new Date(), "GMT-7", "yyyy-MM-dd HH:mm:ss") + '</div>';
while(file.hasNext())
{
var fi = file.next();
var target = fi.getName();
if(target == filename)
{
targetFound = true;
fi.setContent(timeStamp + GStorage);
SpreadsheetApp.getUi().alert('Directory Listing was updated using: ' + target); }
}
if(!targetFound)
{
var created = fldr.createFile('CurrentDirectoryListing',timeStamp + GStorage);
if(created)
{
SpreadsheetApp.getUi().alert( 'Directory Listing was stored here: ' + fldr.getName() + '/' + created.getName());
}
else
{
SpreadsheetApp.getUi().alert('Unknown Error: Directory List was not stored');
}
}
}
function loadDirlist()
{
var filename = 'CurrentDirectoryListing';
var fldr = DriveApp.getFolderById(folderID);
var file = fldr.getFilesByName(filename);
var targetFound = false;
while(file.hasNext())
{
var fi = file.next();
var target = fi.getName();
if(target == filename)
{
targetFound = true;
GStorage = fi.getBlob().getDataAsString();
//SpreadsheetApp.getUi().alert('Directory Listing was retreived from: ' + fldr.getName() + '/' + target);
}
}
return targetFound;
}
function clearDirlist()
{
var filename = 'CurrentDirectoryListing';
var fldr = DriveApp.getFolderById(folderID)
var file = fldr.getFilesByName(filename);
var targetFound = false;
while(file.hasNext())
{
var fi = file.next();
var target = fi.getName();
if(target == filename)
{
targetFound = true;
fldr.removeFile(fi);
SpreadsheetApp.getUi().alert('File: ' + filename + ' was removed from: ' + fldr.getName() + '/' + target);
}
}
return targetFound;
}
Utility.gs:
function dispStatus(title,html,width,height)
{
// Display a modeless dialog box with custom HtmlService content.
var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
var width = typeof(width) !== 'undefined' ? width : 250;
var height = typeof(height) !== 'undefined' ? height : 300;
var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
var htmlOutput = HtmlService
.createHtmlOutput(html)
.setWidth(width)
.setHeight(height);
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
}
function getTriggers()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var triggers = ScriptApp.getUserTriggers(ss);
var title = "All My Current Triggers";
var msg = '';
if(triggers)
{
for(var i = 0; i < triggers.length; i++)
{
msg+= 'Triggers[' + i + '] = ' + '<br />';
msg+='EventType = ' + triggers[i].getEventType() + '<br />HandlerFunction = ' + triggers[i].getHandlerFunction() + '<br />TriggerSource = ' + triggers[i].getTriggerSource() + '<br />TriggerSourceID = ' + triggers[i].getTriggerSourceId() + '<br />TriggerUniqueId = ' + triggers[i].getUniqueId() +'<br /><br />';
}
dispStatus(title,msg,800,500);
}
else
{
dispStatus('All My Current Trigger','No Trigger',800,500);
}
}
test.gs:(不确定是否使用过)
function test()
{
var prompt ='';
if(prompt)
{
var S = SpreadsheetApp.getUi().prompt('7 comma separated values A[0] = A[1] , A[2] , A[3] && A[4] == A[5] A[6] is stop 1,1,1,1,1,1,1');
}
else
{
var S = SpreadsheetApp.getUi().prompt('7 comma separated values A[0] = A[1] , A[2] , A[3] && A[4] == A[5] 1,1,1,1,1,1,1');
}
var A = S.getResponseText().split(',');
if(A[0] = A[1] , A[2] , A[3] && A[4] == A[5])
{
SpreadsheetApp.getUi().alert('It\'s true.');
}
else
{
SpreadsheetApp.getUi().alert('It\'s false.');
}
if(A[6]==1)
{
test();
}
else
{
return;
}
}
function test1()
{
//(editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3 && sheet.getName() == sheetToSort)
//var title = 'Evaluate (i==j, k, l && m==n) = result';
var title = 'Evaluate (i==j, k, l) = result';
var msg='';
for(var i=0;i<5;i++)
{
var j=0;
{
var k=1;
{
var l=2;
{
var m=0;
{
var n=0;
{
if(n==j, k, l )
{
result='<span style="color:red;">true</span>';
}
else
{
result='<span style="color:black;">false</span>';
}
//msg += '( ' + i + ' == ' + j + ', ' + k + ', ' + l + ' && ' + m + ' == ' + n + ' ) = ' + result +'<br />';
msg += '( ' + i + ' == ' + j + ', ' + k + ', ' + l + ' ) = ' + result +'<br />';
}
}
}
}
}
}
dispStatus(title,msg,600,500);
}
function do_onEdit(e)
{
dispStatus('Do On Edit', 'At the beginning of do_onEdit',400,200);
var sheetToSort = "Sheet2"; // name of sheet to be sorted
var columnToCheck1 = 2; // column to check for edits
var columnToCheck2 = 3; // second column to be checked for edits
var columnToCheck3 = 6;
var columnToCheck4 = 10;
var columnToCheck5 = 11;
var columnToCheck6 = 12;
var columnToCheck7 = 13;
var columnToCheck8 = 14;
var columnToSortBy = 16; // column to sort by; A = 1, B = 2, etc.
var rangeToSort = "A1:P150"; // range of values to be sorted
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
if (editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3, columnToCheck4, columnToCheck5, columnToCheck6, columnToCheck7, columnToCheck8 && sheet.getName() == sheetToSort)
{
SpreadsheetApp.getUi().alert("I'm busy sorting don't bother me.");
}
}
function addNew_onEdit_Trigger()
{
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger('do_onEdit')
.forSpreadsheet(sheet)
.onEdit()
.create();
}
function timer_test()
{
dispStatus('Loading.....','<script>var myVar = setInterval(myTimer ,5000);function myTimer() { google.script.host.close();}</script>',200,100);
}
function associativeArrayTesting()
{
var myA = {'man':'boy','woman':'girl','horse':'pony','hard':'gentle'};
var result = SpreadsheetApp.getUi().prompt('Enter a sentence using man, woman and horse.');
var test = result.getResponseText();
test = test.replace(/[\.]/,'');
var wordsA = test.split(' ');
for(var i = 0;i<wordsA.length;i++)
{
var key = wordsA[i];
var value = myA[key];
if(myA[key])
{
wordsA[i]=myA[wordsA[i]];
}
}
dispStatus('My Word', wordsA.join(' '));
}
function SortQuestion(event)
{
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var ecol = editedCell.getColumn();
var tableRange = "C16:84";
var range = sheet.getRange(tableRange);
range.sort([function(x, y) {
cx = x[5];
cy = y[5];
return (cx != "" && cy != "") || (cx == "" && cy == "") ? 0 : (cx == "" ? -1 : 1);
}, {column: 4, ascending: false}]);
}function test()
{
var prompt ='';
if(prompt)
{
var S = SpreadsheetApp.getUi().prompt('7 comma separated values A[0] = A[1] , A[2] , A[3] && A[4] == A[5] A[6] is stop 1,1,1,1,1,1,1');
}
else
{
var S = SpreadsheetApp.getUi().prompt('7 comma separated values A[0] = A[1] , A[2] , A[3] && A[4] == A[5] 1,1,1,1,1,1,1');
}
var A = S.getResponseText().split(',');
if(A[0] = A[1] , A[2] , A[3] && A[4] == A[5])
{
SpreadsheetApp.getUi().alert('It\'s true.');
}
else
{
SpreadsheetApp.getUi().alert('It\'s false.');
}
if(A[6]==1)
{
test();
}
else
{
return;
}
}
function test1()
{
//(editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3 && sheet.getName() == sheetToSort)
//var title = 'Evaluate (i==j, k, l && m==n) = result';
var title = 'Evaluate (i==j, k, l) = result';
var msg='';
for(var i=0;i<5;i++)
{
var j=0;
{
var k=1;
{
var l=2;
{
var m=0;
{
var n=0;
{
if(n==j, k, l )
{
result='<span style="color:red;">true</span>';
}
else
{
result='<span style="color:black;">false</span>';
}
//msg += '( ' + i + ' == ' + j + ', ' + k + ', ' + l + ' && ' + m + ' == ' + n + ' ) = ' + result +'<br />';
msg += '( ' + i + ' == ' + j + ', ' + k + ', ' + l + ' ) = ' + result +'<br />';
}
}
}
}
}
}
dispStatus(title,msg,600,500);
}
function do_onEdit(e)
{
dispStatus('Do On Edit', 'At the beginning of do_onEdit',400,200);
var sheetToSort = "Sheet2"; // name of sheet to be sorted
var columnToCheck1 = 2; // column to check for edits
var columnToCheck2 = 3; // second column to be checked for edits
var columnToCheck3 = 6;
var columnToCheck4 = 10;
var columnToCheck5 = 11;
var columnToCheck6 = 12;
var columnToCheck7 = 13;
var columnToCheck8 = 14;
var columnToSortBy = 16; // column to sort by; A = 1, B = 2, etc.
var rangeToSort = "A1:P150"; // range of values to be sorted
var sheet = SpreadsheetApp.getActiveSheet();
var editedCell = sheet.getActiveCell();
if (editedCell.getColumn() == columnToCheck1, columnToCheck2, columnToCheck3, columnToCheck4, columnToCheck5, columnToCheck6, columnToCheck7, columnToCheck8 && sheet.getName() == sheetToSort)
{
SpreadsheetApp.getUi().alert("I'm busy sorting don't bother me.");
}
}
function addNew_onEdit_Trigger()
{
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger('do_onEdit')
.forSpreadsheet(sheet)
.onEdit()
.create();
}
function timer_test()
{
dispStatus('Loading.....','<script>var myVar = setInterval(myTimer ,5000);function myTimer() { google.script.host.close();}</script>',200,100);
}
function associativeArrayTesting()
{
var myA = {'man':'boy','woman':'girl','horse':'pony','hard':'gentle'};
var result = SpreadsheetApp.getUi().prompt('Enter a sentence using man, woman and horse.');
var test = result.getResponseText();
test = test.replace(/[\.]/,'');
var wordsA = test.split(' ');
for(var i = 0;i<wordsA.length;i++)
{
var key = wordsA[i];
var value = myA[key];
if(myA[key])
{
wordsA[i]=myA[wordsA[i]];
}
}
dispStatus('My Word', wordsA.join(' '));
}
function SortQuestion(event)
{
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var ecol = editedCell.getColumn();
var tableRange = "C16:84";
var range = sheet.getRange(tableRange);
range.sort([function(x, y) {
cx = x[5];
cy = y[5];
return (cx != "" && cy != "") || (cx == "" && cy == "") ? 0 : (cx == "" ? -1 : 1);
}, {column: 4, ascending: false}]);
}
我在文件中存储了一些片段,因为运行此脚本需要很长时间,所以每次我决定存储我认为如果我正在寻找旧的信息时可能有用的信息,而不是花时间遍历所有文件东西。实际上,我从不使用脚本。你可以就它提出问题,但我不保证回答它们,因为我已经很久没有看过它了。它在 Rhino 中运行,但我尚未在 v8 中对其进行测试。