Google Forms Apps 脚本(悬停文本在刷新之前显示不佳)

Google Forms Apps Script (hover text not appearing nicely until refresh)

我有一个正在运行的 Google Apps 脚本,它在像这样的图像项目上设置帮助文本:

      form.addImageItem()
        .setImage(questionImages[i])
        .setTitle("Question " + position)
        .setHelpText(question.help)

一切正常。问题是帮助文本可能 很长 并且当我将它插入表单时它看起来大小不正确 ->

直到页面被刷新,然后页面大小正确且显示良好 ->

有没有办法强制页面“重绘”?我试图“刷新”页面:

  var form = FormApp.getActiveForm();
  var id = form.getId();
  FormApp.openById(id);

但这没有用。我在 api 中没有看到任何类型的“刷新”或类似功能,所以,我没有想法。

如果有人解决了这个问题,我很乐意听到!

我可以复制同样的情况。在这种情况下,好像是在使用GoogleFomr服务(FormApp)时,才会出现这样的情况。

不过,幸运的是,我可以确认当使用Google表格API时,放置长文本时可以显示所有文本。所以在这个回答中,我想提出使用Forms的方法API.

用法:

1。正在将 Google 云平台项目链接到 Google Apps 脚本项目以用于新的 IDE。

为了使用 Forms API,请 link Google Cloud Platform Project to Google Apps Script Project for New IDE,并启用在 API 控制台形成 API。 Ref

2。示例脚本。

function myFunction() {
  const formId = "###"; // Please set your Google Form ID.

  const url = `https://forms.googleapis.com/v1beta/forms/${formId}:batchUpdate`;
  const requestBody = {
    "requests": [
      {
        "createItem": {
          "item": {
            "imageItem": {
              "image": {
                "sourceUri": "https://Whosebug.design/assets/img/logos/so/logo-Whosebug.png",
                "altText": "sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample sample"
              }
            },
            "title": "sample title"
          },
          "location": {
            "index": 0
          }
        }
      }
    ]
  };
  const params = {
    method: "post",
    contentType: "application/json",
    headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() },
    payload: JSON.stringify(requestBody),
    muteHttpExceptions: true
  };
  const res = UrlFetchApp.fetch(url, params);
  console.log(res.getContentText())
}
  • 在此脚本中,请包含https://www.googleapis.com/auth/forms.body的范围。

注:

  • 当你想简单的查看这个时,也可以使用"Try this method" of Forms API。在这种情况下,请使用我建议的脚本放置请求正文。这样,你就可以很快测试了。

参考文献: