注意:此问题不关于查找项目的ID(表单元素),但是条目的ID。这些是不同的东西。条目ID是一个数字,用于预先填充表单URL中的字段(Items)。
如此处https://developers.google.com/apps-script/reference/forms/text-item所述,可以通过import random
number = random.randint(1, 100)
while True:
pick = input("Choose a number between 1 and 100. "+ str(number))
pick = int(pick)
if pick == number:
print("You are correct, great job! ")
if pick > number:
print("That was too high of a guess. Try again. ")
elif pick < number:
print("That was too low of a guess. Try again. ")
方法获取TextItem ID(实际上是任何Item ID)。
如果您打开任何公开的Google表单HTML源代码,您会在getID()
中看到类似的内容:
var FB_PUBLIC_LOAD_DATA
我没有看到获取条目ID 的方法。实际上是否可以通过Google Apps Script API进行操作?
答案 0 :(得分:3)
我想扩展@devonuto的想法
下面的代码应返回一个包含其属性包括<code
jcr:primaryType="cq:Widget"
fieldLabel="Code"
key="code"
width="100%"
xtype="textfield"/>
<name
cr:primaryType="cq:Widget"
fieldLabel="Name"
key="name"
width="100%"
xtype="textfield"/>
entry
您必须自己扩展function getPreFillEntriesMap_(id){
var form = FormApp.openById(id);
var items = form.getItems();
var newFormResponse = form.createResponse();
var itms = [];
for(var i = 0; i < items.length; i++){
var response = getDefaultItemResponse_(items[i]);
if(response){
newFormResponse.withItemResponse(response);
itms.push({
id: items[i].getId(),
entry: null,
titile: items[i].getTitle(),
type: "" + items[i].getType()
});
}
}
var ens = newFormResponse.toPrefilledUrl().split("&entry.").map(function(s){
return s.split("=")[0];
});
ens.shift();
return itms.map(function(r, i){
r.entry = this[i];
return r;
}, ens);
}
function getDefaultItemResponse_(item){
switch(item.getType()){
case FormApp.ItemType.TEXT:
return item.asTextItem().createResponse("1");
break;
case FormApp.ItemType.MULTIPLE_CHOICE:
return item.asMultipleChoiceItem()
.createResponse(item.asMultipleChoiceItem().getChoices()[0].getValue());
break;
default:
return undefined;
}
}
才能支持大量项目。
这对我来说很好
getDefaultItemResponse_()
function run(){ Logger.log(JSON.stringify( getPreFillEntriesMap_("1X9MBJDZYwrij8m_c7V4HbrT1cOyBu2OLRvDsnqS4Vdw"), null, " " )); }
答案 1 :(得分:2)
有两种获取条目ID的方法
答案 2 :(得分:2)
意识到这是一个旧线程,但是我一直在做类似的事情,我需要ID才能在C#应用程序中创建预填充超链接。
您可以为此创建响应,而无需提交即可获取信息。
import pandas as pd
import numpy as np
data={'Col1':['AAPL', np.nan, 'GOOG', 'MMM', np.nan, 'INTC', 'FB'],'Col2':['GOOG', 'IBM', 'MSFT', np.nan, 'GOOG', 'AAPL', 'VZ']}
df=pd.DataFrame(data,columns=['Col1','Col2'])
print (df)
# How to code after this to produce expected result?
# Appreciate any hint/help provided
答案 3 :(得分:1)
这个对我有用。
1.获取预填链接(您可以在表单编辑窗口的更多选项中看到)。
2.在新出现的表单中,填写所有的图块,然后点击“获取链接”。
3.在新标签中粘贴链接,填写好的表格就会出现。
或
5.右键单击带有响应的第一个图块,然后检查。
6.Cmd+f for Mac 或 Ctrl+f for windows 搜索,搜索你输入的响应你可以看到代码中的元素Id。
答案 4 :(得分:0)
好答案@contributorpw ...很好。
Youd仅添加了几种表单类型,因此我添加了其余大多数表单类型。在撰写本文时,我在文档中没有看到.asFileItem()的选项,因此我没有添加该选项以及其他一些较不常见的选项(例如PAGE_BREAK,SECTION_HEADER等)。 )
欢迎有人添加它们;-)
pip install pygame==2.0.0.dev14