【问题标题】:Error in app script code that will not function due to forEach由于 forEach 导致应用脚本代码出错
【发布时间】:2021-04-09 11:23:25
【问题描述】:

由于它没有运行,你如何让它与下面的这一行一起工作?

我正在尝试在谷歌表单上使用它

需要结果

“提交表单” - 我想在我的主文件夹中创建一个子文件夹(根据表单中的字段命名)

我希望上传的文件进入创建的子文件夹

错误代码

上午 7:14:19 错误
/TypeError: itemResponses[1].getResponse(...).forEach 不是函数 onFormSubmit@Code.gs:16/

itemResponses[1].getResponse().forEach(id => DriveApp.getFileById(id).moveTo(folder)); }

完整代码如下

function onFormSubmit(e) {
const folderId = "###";  // Please set top folder ID of the destination 
folders.
const form = FormApp.getActiveForm();
const formResponses = form.getResponses();
const itemResponses = formResponses[formResponses.length- 
1].getItemResponses();

Utilities.sleep(3000); // This line might not be required.

// Prepare the folder.
const destFolder = DriveApp.getFolderById(folderId);
const folderName = itemResponses[3].getResponse();
const subFolder = destFolder.getFoldersByName(folderName);
const folder = subFolder.hasNext() ? subFolder : 
destFolder.createFolder(folderName);

// Move files to the folder.
itemResponses[1].getResponse().forEach(id => 
DriveApp.getFileById(id).moveTo(folder));
}

【问题讨论】:

  • 如果没有看到相应的表格,很难说出问题所在。可以提供表格吗?问题似乎是itemResponses[1].getResponse() 没有返回列表。

标签: google-apps-script


【解决方案1】:

getFoldersByName(name)返回

FolderIterator — 所有子文件夹的集合 当前文件夹并具有给定的名称。

您需要获取带有next() 的集合文件夹之一。

“如果”应该是这样的:

const folder = subFolder.hasNext() ? subFolder.next() : destFolder.createFolder(folderName);

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2016-03-28
    • 2022-11-18
    相关资源
    最近更新 更多