【发布时间】:2022-01-23 03:56:18
【问题描述】:
在这里,我试图检查 "STATUS" 列是否为“新文件”,然后我想执行从 excel 到电子表格的文件对话。
对于 “STATUS” 列,我创建了一个 IF-ELSE 语句,
if (row[0] === "last week file") {
newValues.push(['OLD FILE'])
}
else{
newValues.push(['NEW FILE'])
ConvertFiles()
return
}
因此,我通过“STATUS”进行检查,如果状态栏为空则写为'NEW FILE',然后将文件从excel转换为电子表格,因为我已经调用了其中的方法。
这里是文件转换的EDITED版本代码:
function ConvertFiles() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var range = sheet.getRange(2, 1, sheet.getLastRow()-1, 5); // get A2:E6 range
var data = range.getValues(); // get A2:E6 data
for(var i = 0; i < data.length; i++){
if(data[i][2] == " "){
for( var r= 2;r < sheet.getLastRow()+1; r++){
var fileId = sheet.getRange(r,1).getValue();
var folderID = sheet.getRange(r,2).getValue(); //for destination folder
var files = DriveApp.getFileById(fileId);
var name = files.getName().split('.')[0];
var blob = files.getBlob();
var newFile = {
title: name.replace('_converted','') + '_converted',
parents: [{id: folderID}] };
var destinationFolderId = DriveApp.getFolderById(folderID);
var existingFiles = destinationFolderId.getFilesByName(newFile.title);
while(existingFiles.hasNext()) {
var oldConvertedFileWithSameNameID = existingFiles.next().getId();
Drive.Files.remove(oldConvertedFileWithSameNameID,{supportsAllDrives: true});
}
var newFileID = Drive.Files.insert(newFile, blob, { convert: true,supportsAllDrives: true }).id;
Logger.log(newFileID);
var Url = "https://drive.google.com/open?id=" + newFileID;
//sheet.getRange(r,4).setValue(newFileID);
//sheet.getRange(r,5).setValue(Url);
}
sheet.getRange(i+2,4).setValue(newFileID); //set value in column D
sheet.getRange(i+2,5).setValue(Url); //set value in column E
}
}
}
我面临的 错误 是,当我在 if 语句中调用方法 ConvertFiles() 时,转换从 第 2 行一直持续到第 6 行,而不会停止示例中以红色圆圈显示。
我只想在 "NEW FILES" 上进行转换,该文件将位于第 5 行和第 6 行。
如何在选定/指定的行上进行转换?
【问题讨论】:
-
读取单元格的值很简单。
Sheet.getRange().getValue() -
转换excel文件:stackoverflow.com/a/55645062/7215091
标签: excel google-apps-script google-sheets google-drive-api