从Google云端硬盘中的电子表格数据制作文件夹?

时间:2013-05-09 11:14:04

标签: google-apps-script google-sheets

我刚开始学习Javascript和Google Apps脚本。我看过并玩了几个脚本,所以我试图创建自己的脚本。我想要做的是获取学生列表(姓名和电子邮件)并运行脚本来创建“dropboxes”,或者使用其名称并与其电子邮件地址共享的文件夹。通过这种方式,他们可以轻松地以有组织的方式向我提交工作。我写过这个粗略的剧本,我知道这不会奏效。

我想知道是否有人可以给我一些提示?

function createDropbox () {
 // Get current spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var data = sh1.getDataRange().getValues();

 // For each email address (row in a spreadsheet), create a folder, name it with the data from the Class and Name column, then share it to the email

for(n=1;n<data.length;++n){

var class = sheet.getSheetValues(n, 1, 1, 1);
var name = sheet.getSheetValues(n, 2, 1, 1);
var email = sheet.getSheetValues(n, 3, 1, 1);
var folder = DocsList.createFolder('Dropbox');
 folder.createFolder(class . name);
var share = folder.addEditor(email);

}

}

1 个答案:

答案 0 :(得分:3)

你已经掌握了脚本的基本结构,只需要解决语义和错误处理问题。

您需要确定如何访问电子表格的内容,并与该选择保持一致。

  • 在您的问题中,您首先使用Range.getValues()将电子表格的所有内容转换为二维数组,然后稍后使用{{1}多次尝试直接从工作表中获取值}。
  • 由于您的算法基于处理范围内的值,因此使用数组将是您最有效的方法。要引用.getSheetValues()数组的内容,只需使用data索引。

你应该提前考虑一下。如果您需要添加更多学生保管箱,将来会发生什么?在编写初始算法时,会盲目创建新文件夹。由于Google云端硬盘允许多个具有相同名称的文件夹,因此第二次运行该脚本会复制所有现有文件夹。因此,在创建任何内容之前,您需要检查事物是否已存在,并进行适当处理。

一般建议:在编辑器中编写应用程序脚本代码,并利用自动完成功能。代码着色。这有助于避免变量名称不匹配([row][column] vs ss)等错误。

如果您打算自己完成练习,请继续阅读!


脚本

除了sh1功能外,此脚本还有onOpen()功能,可以创建可在电子表格中使用的菜单。

createDropbox()函数将创建一个顶级“Dropbox”文件夹(如果尚不存在)。然后,它将对电子表格中的任何学生执行相同的操作,创建和共享子文件夹(如果它们尚不存在)。如果您向电子表格添加更多学生,请再次运行该脚本以获取其他文件夹。

作为免费的教育服务,我已经包含了一些评论来解释一些棘手的问题!

createDropbox()