javascript - 通过更新谷歌表格中的行在谷歌驱动器中创建文件夹

标签 javascript google-apps-script google-drive-api google-docs google-sheets-api

我可以从 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/

相关文章:

javascript - 使用 jQuery 获取多个属性 (Src)

javascript - 使用脚本在 Google 表格中重新定位光标

javascript - 如何在 html 小程序中使用 Google 应用脚本属性服务

http - Golang http 获取空response.Body

javascript - Eloquent Javascript 的 findSequence 说明

javascript - 暂停/恢复在nodejs中执行的代码

javascript - 为什么 TypeScript 中的类允许鸭子类型(duck typing)

谷歌表格数据到 json

c++ - 使用 Qt/C++ 确定 Google Drive 位置

google-apps-script - 使用 DriveApp 访问共享驱动器