我之前发过这个问题,但没有正确标记(因此我可能没有得到答案)所以我想我会再给它一次,因为我在此期间找不到答案。
以下脚本正在给我标题中的消息。我有另一个函数,它使用相同的getValue方法,但运行正常。我可以在脚本中更改哪些内容以避免此问题?
function trashOldFiles() {
var ffile = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CtrlSht").getRange("B3:B3").getValue();
var files = DriveApp.getFilesByName(ffile);
while (files.hasNext()) {
var file = files.next();
var latestfile = DriveApp.getFileById(listLatestFile());
if(file.getId() ==! latestfile){
file.setTrashed(true);
}
}
};
答案 0 :(得分:0)
是错误还是执行提示(菜单中的灯泡)?
您是否在代码的其他部分使用该方法?可能在listLatestFile()? 我通过在listLatestFile()中调用getRange()。getValue()得到了相同的执行提示(使用循环) 并且提示总是提到问题是在调用
时var ffile = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CtrlSht").getRange("B3:B3").getValue();
在函数trashOldFiles()中,即使实际问题出现在其他函数中也是如此。
检查您是否在代码中的其他位置调用它,可能是在循环内。
答案 1 :(得分:0)
var id = result[0][1];
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CtrlSht").getRange("B5:B5").setValue(id);
//Logger.log(id);
return id;
然后从电子表格中检索最新的文件ID,以用作处理垃圾的trashOldFiles()函数的比较值。
function trashOldFiles() {
var tfile = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CtrlSht").getRange("B3:B3").getValue();
var tfiles = DriveApp.getFilesByName(tfile);
var lfile = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CtrlSht").getRange("B5:B5").getValue();
while (tfiles.hasNext()) {
var tfile = tfiles.next();
if(tfile.getId() !== lfile){
tfile.setTrashed(true);
}
}
};
不确定这种做法是否是最佳做法,但确实对我有用。如果有人提出以更优雅的方式实现这一目标的建议,我会全力以赴。