英文:
How To List Google Form Published URL With Google Apps Script
问题
I can provide the translation for the code portion you provided:
我有一些Google表格在我的驱动器中。
我想在电子表格中列出所有这些Google表格的发布网址。
为了参考,我使用这篇帖子[列出文件][1],并尝试使用[文件类型][2]获取特定类型的文件。
当涉及到指定发布网址列表时,我遇到了困难。
我尝试使用:
function listFormURL(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAPPING FORM')
var folder = DriveApp.getFolderById('1Oj-o5jxxxxxxxxxxxxxxxxxxxJ3fcA');
var list = [];
list.push(['Name','ID','Size']);
// 我试图有四个列表: list.push(['Name','ID','Size','URL']);
// 如何使用下面的变量'formUrl'来获取发布网址列表,而不仅仅是'Name','ID'和'Size'
var formUrl = FormApp.getActiveForm().getPublishedUrl();
var files = folder.getFilesByType(MimeType.GOOGLE_FORMS);
while (files.hasNext()){
file = files.next();
var row = []
row.push(file.getName(),file.getId(),file.getSize())
list.push(row);
}
sh.getRange(1,1,list.length,list[0].length).setValues(list);
}
目前,我可以获得每个Google表格的'Name','ID'和'Size'列表。
[1]: https://stackoverflow.com/questions/25360214/list-all-files-id-inside-a-folder-no-subfolders
[2]: https://developers.google.com/apps-script/reference/base/mime-type
Please note that I've translated the code portion while excluding the non-code parts, as per your request.
英文:
I have some Google Form in my drive.
I want to list all that Google Form published Url in a spreadsheet.
For my reference, I use this post LIST FILES and try to get specific files type with mime type.
I'm having a hard time when it comes to specifying a list of publishedUrl.
I try to use :
function listFormURL(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAPPING FORM')
var folder = DriveApp.getFolderById('1Oj-o5jxxxxxxxxxxxxxxxxxxxJ3fcA');
var list = [];
list.push(['Name','ID','Size']);
// I try to have four list : list.push(['Name','ID','Size','URL']);
// How to use variable 'formUrl' below to get published URl list, not just 'Name','ID' and 'Size'
var formUrl = FormApp.getActiveForm().getPublishedUrl();
var files = folder.getFilesByType(MimeType.GOOGLE_FORMS);
while (files.hasNext()){
file = files.next();
var row = []
row.push(file.getName(),file.getId(),file.getSize())
list.push(row);
}
sh.getRange(1,1,list.length,list[0].length).setValues(list);
}
For now, I can get list 'Name','ID'and 'Size' for every Google Form.
答案1
得分: 2
在您的脚本中,以下修改如何?
FormApp.getActiveForm()
用于Google表单的容器绑定脚本。在您的情况下,我认为 FormApp.openById(id)
会更有用。
修改后的脚本:
function listFormURL() {
var folderId = "###"; // 请设置您的文件夹ID。
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByType(MimeType.GOOGLE_FORMS);
var list = [['Name', 'ID', 'Size', 'URL']];
while (files.hasNext()) {
var file = files.next();
var id = file.getId();
list.push([file.getName(), id, file.getSize(), FormApp.openById(id).getPublishedUrl()]);
}
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAPPING FORM');
sh.getRange(1, 1, list.length, list[0].length).setValues(list);
}
- 运行此脚本时,将在
folderId
文件夹下检索Google表单,并从每个Google表单中检索'Name', 'ID', 'Size', 'URL'
,然后将这些值放入电子表格中。
参考链接:
英文:
In your script, how about the following modification?
FormApp.getActiveForm()
is used for the container-bound script of Google Form. In your situation, I think that FormApp.openById(id)
will be useful.
Modified script:
function listFormURL() {
var folderId = "###"; // Please set your folder ID.
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByType(MimeType.GOOGLE_FORMS);
var list = [['Name', 'ID', 'Size', 'URL']];
while (files.hasNext()) {
var file = files.next();
var id = file.getId();
list.push([file.getName(), id, file.getSize(), FormApp.openById(id).getPublishedUrl()]);
}
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAPPING FORM');
sh.getRange(1, 1, list.length, list[0].length).setValues(list);
}
- When this script is run, Google Forms are retrieved just under the folder of
folderId
, and'Name', 'ID', 'Size', 'URL'
are retrieved from each Google Form, and those values are put to the Spreadsheet.
Reference:
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论