我可以从 Google 表格中的现有列表创建文件夹。该列表不断增长,我希望创建文件夹(可能在时间触发器上)。我的问题是,它再次创建所有文件夹,并重新运行从 A1 开始的所有内容...然后出现一个问题,它自动将链接发布到 B 列,不是特别是 B1,但有时是 B5、B3...
基本上,我想随着列表的不断增长而创建文件夹,而不需要重新运行所有内容,并将新的超链接放在 D 列中...
我尝试使用 while 函数来检查该文件夹是否已创建,但它并没有真正帮助我太多,因为我最终遇到了错误。
function createAndHyperlink() {
var ss, sh, parent, parent2, r, v, thisCell, folder
ss = SpreadsheetApp.getActive()
sh = ss.getSheetByName('f')
parent = DriveApp.getFileById(ss.getId()).getParents().next();
parent2 = DriveApp.getFolderById("1aKKrybi1uSCJPD6m_L5YXOgAV_DofKCK")
r = sh.getRange('A1:A')
v = r.getValues()
for (var i = 0, l = v.length; i < l; i++) {
thisCell = sh.getRange(i + 3, 2)
if (v[i][0] && !thisCell.getFormula()) {
folder = parent2.createFolder(v[i][0]);
thisCell.setFormula('=HYPERLINK("' + folder.getUrl() + '"; "' + v[i][0] + '")');
}
}
}
最后没有错误,但它不有序,我的意思是我非常接近我需要的东西,并且非常感谢您的帮助!
最佳答案
尝试这样的事情:
function createAndHyperlink() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('f');
var parent=DriveApp.getFolderById("1aKKrybi1uSCJPD6m_L5YXOgAV_DofKCK")
var vr=sh.getRange(1,1,sh.getLastRow(),1);//column 1 is values
var v=vr.getValues();
var dr=sh.getRange(1,3,sh.getLastRow(),1);//column 2 is hyperlinks
var d=dr.getValues();
var hr=sh.getRange(1,2,sh.getLastRow(),1);//column 3 is done ... Prevent old assignment from getting recreated
var h=hr.getFormulas();
for(var i=0;i<v.length;i++) {
if(v[i][0] && !h[i][0] && !d[i][0]) {
var folder=parent.createFolder(v[i][0]);
var formula='=HYPERLINK("' + folder.getUrl() + '"; "' + v[i][0] + '")';
h[i][0]=formula;
d[i][0]='Done';
}
}
dr.setValues(d);
hr.setFormulas(h)
}
关于javascript - 通过更新谷歌表格中的行在谷歌驱动器中创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57486388/