是Google脚本的新功能,我也浏览了Stack Overflow上的其他帖子,但找不到合适的答案。
我正在使用从Google表格中收集的数据来搜索Google云端硬盘中的文件并转移文件的所有权。我使用我的用户填写的Google表单,使用附加组件提交后,我会根据表单上提交的数据创建一个文件。现在使用脚本,我试图从工作表中收集某些信息,例如名称,电子邮件和公司名称-此处为示例数据图像。
到目前为止,我有:
function myFunction() {
//Get google sheets
var spreadsheetId = '1WvIIoYdmuIB5BQ3KgSYOOIiEn-K_GTzCkb7rITzRFck';
//get certain values from sheets
var rangeName = 'MDP Form!C25:E';
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
if (!values) {
Logger.log('No data found.');
} else {
Logger.log('Name, Email, Customer:');
for (var row = 0; row < values.length; row++) {
// Print columns C and E, which correspond to indices 0 and 4.
Logger.log('Name: %s, Email: %s, Company: %s', values[row][0], values[row][1], values[row][2]);
//Utilities.sleep(90000);
//Searching through google drive
var name = (values[row][0]);
var email = (values[row][1]);
Logger.log(email);
var company = (values[row][2]);
var fileName = ('Mutual Delivery Plan ' + company + ' - ' + name);
Logger.log(fileName);
//add a 1 minute delay
//Utilities.sleep(90000);
//search for target folder
var folder = DriveApp.getFolderById('1whvRupu9hWdyl2CqSF-KvdVj8VE6iiQu');
//search for file by name within folder
var mdpFile = folder.searchFiles(fileName);
//transfer ownership
mdpFile.setOwner(email);
}
}
}
问题:
该脚本大部分工作,除了最后一行“ setOwner”不是函数。我尝试为此创建一个单独的函数,在其他帖子上使用了一些其他建议,但仍然无法使它正常工作。如果有人对我可能在这里遗漏了什么有什么想法,或者有什么建议会很有帮助。谢谢!
我相信您的目标如下。
fileName
中找到具有的文件时,您想转移文件的所有者folder
。为此,这个答案如何?
虽然您说的是The script works for the most part except for the last line "setOwner" is not a function.
,但如果问题中的脚本是当前脚本,则如何进行以下修改?
fileName
中'Mutual Delivery Plan ' + company + ' - ' + name
,和fileName
与一起使用var mdpFile = folder.searchFiles(fileName);
。在这种情况下,将发生错误。由于params
的searchFiles(params)
要求是查询字符串。
"title='" + fileName + "'"
。searchFiles(fileName)
返回FileIterator
。现有答案已经提到了这一点。因为在Google云端硬盘中,相同的文件名可以存在于同一文件夹中,并且每个文件都由唯一ID管理。因此,这里需要进行如下修改。
hasNext()
。email
。当以上几点反映到您的脚本中时,请进行以下修改。
var mdpFile = folder.searchFiles(fileName);
//transfer ownership
mdpFile.setOwner(email);
至:
var mdpFile = folder.searchFiles("title='" + fileName + "'");
while (mdpFile.hasNext()) {
var file = mdpFile.next();
if (file.getOwner().getEmail() == Session.getActiveUser().getEmail()) {
file.setOwner(email);
}
}
if (file.getOwner().getEmail() == Session.getActiveUser().getEmail()) {
。fileName
名为的文件不存在于中folder
,则不会运行if语句中的脚本。请注意这一点。folder
,这些文件的所有者将更改为email
。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句