Javascript 使用高级驱动器服务创建电子表格

Javascript 使用高级驱动器服务创建电子表格,javascript,google-apps-script,Javascript,Google Apps Script,我正试图弄明白如何使用谷歌应用程序脚本中的高级驱动服务来做一些事情 1)创建包含x行和x列的电子表格: 创建新的电子表格时,如何使其仅包含1行和6列?现在,我使用#2中的函数创建电子表格,然后删除行和列。但如果我能让电子表格有一定数量的行和列,那就更好了 2)设置电子表格的标题: 如何将createFile函数()中电子表格的标题设置为值“name”?现在,它创建了名为“untitled”的电子表格 var file = { title: "", mimeType: MimeType

我正试图弄明白如何使用谷歌应用程序脚本中的高级驱动服务来做一些事情

1)创建包含x行和x列的电子表格
创建新的电子表格时,如何使其仅包含1行和6列?现在,我使用#2中的函数创建电子表格,然后删除行和列。但如果我能让电子表格有一定数量的行和列,那就更好了

2)设置电子表格的标题:
如何将createFile函数()中电子表格的标题设置为值“name”?现在,它创建了名为“untitled”的电子表格

var file = {
  title: "",
  mimeType: MimeType.GOOGLE_SHEETS,
  parents: [{id: artistSpreadSheetsFolderId}] //I have the folder id
};

function createFile(name)
{
  var fileJson = Drive.Files.insert(file);
  var fileId = fileJson.id;
  //how would I set the title of the spreadsheet to the value 'name'?
}

3)通过名称获取文件id
如果我将名称传递到函数中,如何使用高级驱动器服务获取该电子表格的id?这些文件将在一个文件夹中,因此我已经有了该文件夹的id

function getFileId(name)
{
  //get file by name
  //get that files id
}


@塔奈克

对于第一个问题,使用高级驱动器服务无法做到这一点?如果没有,我将如何向第一行添加一个值数组?目前我有:
var headers=[[“1”、“2”、“3”、“4”、“5”、“6”]sheet.getRange(range).setValues(headers)。是否有办法在电子表格的属性部分设置这些值。创建

第二,我在函数外部有一个var文件,因此多个函数可以调用它。我想将创建后的电子表格的名称(在var fileId之后)设置为传入的名称,例如-.setTitle(name)或类似的名称。所以在一个函数中,我只需执行var file=Drive.Files.insert(file);然后像var fileName=//一样在这里设置名称


对于第三个,这只是一个For循环吗?与(var i=0;i要使用以下脚本,请为高级驱动器服务和Google API控制台启用驱动器API和工作表API

参考文献:

启用驱动器API

谷歌表单API v4

1.创建包含x行和x列的电子表格 为此,可以使用GoogleSheetAPI。电子表格可以通过给定行数和列数作为初始属性来创建。但是,在此方法中,创建父文件夹时无法设置它。创建后,需要更改父文件夹

Sheets.Spreadsheets.create({
  "sheets": [
    {
      "properties": {
        "gridProperties": {
          "columnCount": 6,
          "rowCount": 1
        }
      }
    }
  ],
  "properties": {
    "title": "filename"
  }
});
2.设置电子表格的标题 我可能无法理解你的问题。是否要使用设置的名称创建新的电子表格?还是要检索已创建电子表格的名称?如果两者都没有,请告诉我

var res = Drive.Files.insert({
  "title":    "test", // Here, it gives a title of new spreadsheet.
  "mimeType": "application/vnd.google-apps.spreadsheet",
  "parents":  [{"id": "#####"}]
});
Logger.log(res.title) // Here, it retrieves the title of created spreadsheet.
3.通过名称获取文件的id 文件ID作为数组返回。假定存在同名的文件

function getFileId(name){
  return [i.id for each (i in Drive.Files.list({q: "title='" + name + "' and trashed=false"}).items)];
}

回答新问题1 A1:对于第一个,它使用高级驱动器服务。如果要使用此API导入数据,如下所示。以下示例分别将
1、2、3
导入
a1、b1、c1
。在第二次运行此脚本时,数据将添加到第一个数据的下面

var values = [[1, 2, 3]];
Sheets.Spreadsheets.Values.append(
  {"values": values},
  '## Sheet ID ##',
  'a1',
  {valueInputOption: 'RAW'}
)
A2:您可以按如下方式向JSON添加数据

var file = {
  title: "",
  mimeType: MimeType.GOOGLE_SHEETS,
  parents: [{id: artistSpreadSheetsFolderId}] //I have the folder id
};

function createFile(name)
{
  file.title = name;
  var fileJson = Drive.Files.insert(file);
  var fileId = fileJson.id;
  //how would I set the title of the spreadsheet to the value 'name'?
}
A3:

这就是理解

return [i.id for each (i in Drive.Files.list({q: "title='" + name + "' and trashed=false"}).items)];
这与下面的脚本相同

var items = Drive.Files.list({q: "title='" + name + "' and trashed=false"}).items;
var ar = [];
for (var i=0; i<items.length; i++){
    ar.push(items[i].id);
}
return ar;
Drive.Files.update(
  {"parents": [{"id": "## Folder ID ##"}]},
  "## File ID ##"
)
A2:您可以使用以下脚本移动文件夹

var items = Drive.Files.list({q: "title='" + name + "' and trashed=false"}).items;
var ar = [];
for (var i=0; i<items.length; i++){
    ar.push(items[i].id);
}
return ar;
Drive.Files.update(
  {"parents": [{"id": "## Folder ID ##"}]},
  "## File ID ##"
)

为您的新问题添加了答案。对于1,如何将[[1,2,3]]添加到.create json部分,而不是添加值?我看到有一个值:[{}]或rowData:[{object(rowData)}],但我无法让它工作。编辑:另外,我如何将从#1创建的电子表格保存到文件夹中?为您的新问题添加了答案。