[我正在使用代码使用C#从Google表格读取信息(来自Google表单的结果),但是现在我想使用C#更新特定Google表单的下拉列表。我已经看到了可以在其中使用Google应用程序脚本(https://developers.google.com/apps-script/reference/forms)更新下拉列表的代码,但是我找不到在C#中执行此操作的代码。在C#中可以更新Google表格,因此您应该认为可以对Google Forms进行相同的操作。有人这样做吗?我发现的示例在应用程序脚本中非常简单
var existingForm = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
var item = form.getitembyid(3567489);
var values = ["oranges", "Tomatoes"]
item.asListItem().setChoicesValues(values);
没有Forms API,因此您不能直接使用C#执行此操作。因此,如果要以编程方式执行此操作,唯一的选择是使用Apps Script。
但是,有一些解决方法可以“包装” Apps脚本,并从您的C#程序中远程调用它:
您可以publish your script as a web app并将其用作将通过C#应用程序访问的URL端点。该Web应用程序将从您的应用程序接收HTTP请求,然后编辑表单。例如,您可以使用有关您要编辑的项目的数据执行POST
请求,然后使用相应的event object检索该信息。可能是沿着这些路线:
function doPost(e) {
var formId = e.parameter.id; // Your form id
var itemId = e.parameter.itemId; // Your item id
var form = FormApp.openById(formId);
var item = form.getItemById(itemId);
var values = e.parameters.values; // ["oranges", "Tomatoes"]
item.asListItem().setChoicesValues(values);
}
[另一种方法,如果要从C#应用程序远程编辑表单,请使用Apps Script API创建并运行包含用于编辑表单的代码的Apps Script项目。当心,这不是一个简单的方法,它需要几个步骤:
parentId
(并且可以在脚本中使用FormApp.getActiveForm()
,而无需授权)。scriptId
,调用projects.updateContent,在其中您必须添加与项目中文件相对应的代码。