需要帮助调试旨在更新 Google 云端硬盘中数百个文件的 Google Apps 脚本代码

2024-01-11

我工作的公司刚刚更新了其品牌,影响了保存到共享 Google 云端硬盘的数百个 Excel 和 PowerPoint 文件。有一个团队正在努力更新文件。我的挑战是找到一种有效的方法来添加新文件并删除 Google 云端硬盘中的旧文件。

我创建了一个 Google 表格来捕获当前文件 ID、新文件 ID 和文件夹 ID,以及以下 Google Apps 脚本代码。该代码引发以下错误。

异常:获取对象 DriveApp 上的方法或属性 getFileById 时发生意外错误。
批量更新@批量更新.gs:25

希望有人能帮我调试吗?我是一个新手,我已经碰壁了。

function BulkUpdate() {
  
  // This constant is added to updated files
  var success = "Success"

  // Define range 
  var sheet = SpreadsheetApp.getActiveSheet();
  var firstRow = 2; // First row of data to process
  var lastRow = sheet.getLastRow(); // Last row of data to process

  // Fetch range
  var dataRange = sheet.getRange(firstRow, 1, lastRow, 4);

  // Fetch values for each row in range
  var data = dataRange.getValues();
  for (var i = 0; data.length; ++i) {
    var row = data[i];
    var folderId = row[0]; // First column
    var currentFileId = row[1]; // Second column
    var newFileId = row[2]; // Third column
    var confirmation = row[3]; // Fourth column

    // Copy new file to folder and trash current file
    if (confirmation !== success) {
      var currentFile = DriveApp.getFileById(currentFileId);
      var newFile = DriveApp.getFileByID(newFileId);
      var folder = DriveApp.getFolderById(folderId);
      newFile.makeCopy(folder);
      currentFile.setTrashed(true);

      // Update spreadsheet
      sheet.getRange(firstRow + i, 4).setValue(success);
      SpreadsheetApp.flush();
    }
  }
  
  // Create a popup window
  SpreadsheetApp.getUi().alert("Updates Complete");
}

谢谢大家。结果我需要从中减去一lastRow在定义“dataRange”时。下面您将找到最终的代码以供参考。

function onOpen() {
  var sheet = SpreadsheetApp.getActive();
  var menuItems = [{name: 'Update Google Drive', functionName: 'bulkUpdate'}];
  sheet.addMenu('Menu', menuItems);
}

function bulkUpdate() {
  
  // This constant is added to updated files
  var success = "Success"

  // Define range 
  var sheet = SpreadsheetApp.getActiveSheet();
  var firstRow = 2; // First row of data to process
  var firstColumn = 1; // First column of data to process
  var lastRow = sheet.getLastRow(); // Last row of data to process
  var lastColumn = 6; // Last column of data to process

  // Fetch range
  var dataRange = sheet.getRange(firstRow, firstColumn, lastRow - 1, lastColumn);

  // Fetch values for each row in range
  var data = dataRange.getValues();
  for (i = 0; i < data.length; i++) {
    var row = data[i];
    var folderId = row[1]; // Second column
    var currentFileId = row[3]; // Fourth column
    var newFileId = row[4]; // Fifth column
    var confirmation = row[5]; // Sixth column

    // Copy new file to folder and trash current file
    if (confirmation !== success) {
      var currentFile = DriveApp.getFileById(currentFileId);
      var newFile = DriveApp.getFileById(newFileId);
      var folder = DriveApp.getFolderById(folderId);
      newFile.moveTo(folder);
      currentFile.setTrashed(true);

      // Update spreadsheet
      sheet.getRange(firstRow + i, 6).setValue(success);
      SpreadsheetApp.flush();
      continue;
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要帮助调试旨在更新 Google 云端硬盘中数百个文件的 Google Apps 脚本代码 的相关文章

  • AdminDirectory.Members.list 授权错误

    我正在尝试使用 Admin SDK 并尝试在 Google 电子表格中列出群组成员 这是我想出的代码 function recordGroupsMembers var ss SpreadsheetApp getActiveSpreadshe
  • 如何使用脚本获取 Google 文档中的修订历史记录?

    如何使用脚本获取 Google 文档中的修订历史记录 我该怎么做 一些想法 您可能需要启用 Drive SDK 您可以在 资源 gt 高级 Google 服务 菜单中执行此操作 然后执行类似以下操作 var revisions Drive
  • 使用 Google App Script 从一个电子表格跳转到另一个电子表格

    我有一个脚本 仅当我位于运行代码的当前工作表中时才有效 在 A1 中 我有一个复选框 其作用是刷新 api 请求 因此 我下面的代码单击复选框并获取新数据 所以我的代码的目的基本上是单击 A1 中的复选框 但是 运行此代码只会激活复选框 但
  • 如何在表单提交时运行 Appscript?

    我正在尝试创建当用户完成表单提交时重定向到网络应用程序的 Google 表单 我查过谷歌开发者文档 https developers google com apps script guides triggers 但我看不到一种简单的方法来做
  • 我正在尝试将变量从 Google 脚本传递到 HtmlOutputFromFile

    我正在尝试创建一个带有下拉列表的输入框 其中该列表基于从电子表格中提取的二维数组 到目前为止 我的研究告诉我 如果我将 HtmlService createHtmlOutputFromFile 存储在一个变量中 我就可以 设置该变量的属性
  • 如何将条件格式从一个文档复制到另一个文档?

    Google电子表格可以将单元格格式复制到目标单元格 但似乎 条件格式 信息没有被复制 我们可以将 条件格式 从一个文档复制到另一个文档吗 我知道我们可以从 条件格式 对话框中重新创建它 但这确实很耗时 而如果我们可以复制和粘贴 那就太棒了
  • 类型错误:ss.getSheetByName 不是函数

    我的代码旨在从用户输入表单中获取数据并将新行插入到电子表格中 function addNewRow rowData const currentDate new Date const ss SpreadsheetApp getActiveSh
  • Google App Script ContentService downloadAsFile 不起作用

    我有一个使用 Google App Script 开发的网络应用程序HtmlService并从 html 表单中 使用以下命令填充 Google 驱动器中的 Excel 工作表SpreadsheetApp 另一个部门正在打电话Content
  • 无法在 onclick 函数中传递多个参数

    我正在尝试创建一个上传机制 其中我可以使用 HTML 中的文件 ID 将文件上传到 google 驱动器中 我不想将文件夹的 ID 放在上传函数中 因为这是需要的 我试图通过声明另一个参数 即函数 upload e id 来传递函数 upl
  • 如何使用脚本格式化 Google 文档中的文本

    我想编写一个脚本来查找所有特定单词并格式化它们的颜色 我尝试了以下操作 但似乎不起作用 function ChangeColor var body DocumentApp getActiveDocument getBody var mywo
  • Google Web Apps - 获取用户电子邮件但以所有者身份运行脚本

    我最近迷上了谷歌网络应用程序 但我遇到了一些进退两难的问题 我正在尝试构建一个对非常特定的用户开放的应用程序 并且他们正在查看的数据根据 其访问组进行过滤 在谷歌表格中 我列出了用户电子邮件及其各自的访问组 A 列 电子邮件 B 列 访问组
  • javascript 对象是否像 Ruby 一样“开放”?

    在 Ruby 中 我可以使用与声明自己的语法相同的语法来添加和修改任何类 对象或方法的功能 因为 Ruby 有 开放类 JavaScript 是这样的吗 举个例子 就我而言 我想更改 Google Apps 脚本处理 URL 对象的方式 以
  • 列出文件夹中的所有文件,包括子文件夹中的文件

    我正在尝试创建一个 Google Apps 脚本 该脚本将允许用户获取文件夹内的所有文件 包括连接到主文件夹的子文件夹内的文件 请注意 在我的代码中 我是提供folderid的人 这将是主文件夹 我已设法从文件夹中获取所有文件 但我还希望提
  • Google Apps 脚本中 ui.alert 窗口中的分割线和粗体文本

    我觉得这应该很简单 但我找不到任何相关内容 我希望我的消息在 ui alert 窗口中弹出 以粗体显示某些单词并在以下位置分割字符串 进入新行 这是我的代码 function send var ui SpreadsheetApp getUi
  • 自动从外部数据库加载 Google 电子表格数据

    我有一个共享的 Google 电子表格 工作表的某些列必须填充数据库服务器 PostgreSQL 中存在的数据 SQL 查询 此外 数据加载必须安排为自动完成 例如每天 1 点 最后 我需要在电子表格中进行一些调整 例如 加载后将日期时间放
  • Firebase GAS webapp Google 弹出窗口消失

    我正在尝试升级我的 firebase GAS web 应用程序 之前我有一个弹出窗口 可以让用户使用 Google 登录 我不确定我做错了什么 但我已经升级到新的 firebase 现在正在尝试使用新的代码格式进行相同的登录 发生的情况是
  • maxifs的Google Sheets数组公式[重复]

    这个问题在这里已经有答案了 大家好 我是一名长期支持者 读者 但这是我第一次在 Stackoverflow 上发帖 所以请耐心等待 我正在使用的工作表示例 https i stack imgur com tFQ2n png if E2 If
  • 上传到google脚本中的特定文件夹

    所以我想制作一个表单 将文件 照片 视频上传到 Google Drive 中的特定文件夹 文件 照片 视频 但我不知道如何在 Google Apps 脚本中制作 我尝试了这样的操作 并在控制台中出现错误 无效的参数侦听器 所以这里有一个索引
  • 不允许从此上下文调用 Browser.inputBox()

    在我第一次使用 Google 脚本时 我尝试定义一个调用 Browser input 方法来获取用户名的函数 但我总是收到以下错误消息 不允许从此上下文中调用 Browser inputBox 我必须说 我是从葡萄牙语环境翻译的 因为英语中
  • 将 JSON 数据导入 Google 表格

    我从 Web 服务中提取数据 其格式为 JSON 我正在为 Google Sheets 编写一个 Google Apps 脚本 它将为我填充数据 我的问题是 我似乎无法解析它 Doing var dataset myJSONtext Bro

随机推荐