我正在尝试使用Google Apps脚本中的高级驱动器服务来解决一些问题。
1) 创建包含x行数和列数的电子表格:
在创建新电子表格时,如何才能使其只有1行和6列?现在,我使用#2中的函数创建电子表格,然后删除行和列。但是,如果我可以让电子表格具有一定数量的行和列,那就更好了。
2) 设置电子表格的标题:
如何将createFile函数()中的电子表格标题设置为值'name'?现在,它创建了名为“无标题”的电子表格。
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
}
@Tanaike
对于第一个,使用高级驱动器服务无法做到这一点?如果没有,我将如何在第1行添加值数组?目前我有这个:var headers = [["1", "2", "3", "4,", "5", "6"]];
然后我做sheet.getRange(range).setValues(headers);
。有没有办法在spreadsheet.create的属性部分设置这些值?
对于第二个,我在函数外面有var文件,所以多个函数可以调用它。我想在电子表格创建之后(在var fileId之后)将名称设置为传入的名称,就像 - .setTitle(name)之类的那样。所以在一个函数中我可以做var file = Drive.Files.insert(file);然后在这里做var fileName = // set name。
对于第三个,那只是一个for循环吗?喜欢(var i = 0; i< drive.files.list.length; i ++)?
答案 0 :(得分:2)
以下答案怎么样?要使用以下脚本,请为高级云端硬盘服务和Google API控制台启用Drive API和Sheet API。
参考文献:
启用Drive API https://developers.google.com/drive/v3/web/enable-sdk
Google表格API v4 https://developers.google.com/sheets/api/
为此,您可以使用Google Sheet API。可以通过将行数和列数作为初始属性来创建电子表格。但是,在此方法中,父文件夹在创建时无法设置。创建后,必须更改父文件夹。
Sheets.Spreadsheets.create({
"sheets": [
{
"properties": {
"gridProperties": {
"columnCount": 6,
"rowCount": 1
}
}
}
],
"properties": {
"title": "filename"
}
});
我可能无法理解你的问题。是否要创建一个包含您设置名称的新电子表格?或者您想要检索创建的电子表格的名称?如果没有,请随时告诉我。
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.
文件ID作为数组返回。假设存在具有相同名称的文件。
function getFileId(name){
return [i.id for each (i in Drive.Files.list({q: "title='" + name + "' and trashed=false"}).items)];
}
对不起我的英语很差。
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;
A1:创建电子表格时包含数据的方法如下。在以下脚本中,1, 2, 3
的数据将导入a1, a2, a3
。有各种参数。所以请点击此处https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets。
Sheets.Spreadsheets.create({
"sheets": [
{
"properties": {
"gridProperties": {
"columnCount": 6,
"rowCount": 1
}
},
"data":
[
{
"rowData":
[
{
"values":
[
{"userEnteredValue": {"numberValue": 1}},
{"userEnteredValue": {"numberValue": 2}},
{"userEnteredValue": {"numberValue": 3}}
]
}
]
}
]
}
],
"properties": {
"title": "filename"
}
});
A2:您可以使用以下脚本移动文件夹。
Drive.Files.update(
{"parents": [{"id": "## Folder ID ##"}]},
"## File ID ##"
)