javascript - 错误 : Invalid value at 'requests[0]' (oneof), 一个字段 'kind' 已经设置。无法设置 'createShape'

标签 javascript node.js google-slides-api

我正在使用 google slides API 并尝试根据用户输入的文本制作幻灯片。这是我的文本创建功能,

var num = 1;
function createSlide(auth) {
    //AUTHENTICATION
    const slides = google.slides({version: 'v1', auth});

    //CHANGING VARS
    var slideId = 'slide_' + num;
    var pageId = slideId;;  
    var textId = 'text_box_' + num;
    var elementId = textId;
    var iIndex = num; 
    //SIZING
    var pt350 = {
        magnitude: 350,
        unit: 'PT',
    };   
    //ALL REQUESTS GO IN requests
    var requests = [{
        createSlide: {
            insertionIndex: iIndex,
            objectId: pageId,
            slideLayoutReference: {
                predefinedLayout: 'BLANK'
            }
        },
        //CREATE THE TEXTBOX
        createShape: {
          objectId: elementId,
          shapeType: 'TEXT_BOX',
          elementProperties: {
            pageObjectId: pageId,
            size: {
              height: pt350,
              width: pt350,
            },
            transform: {
              scaleX: 1,
              scaleY: 1,
              translateX: 350,
              translateY: 100,
              unit: 'PT',
            },
          },
        },
      },
      //INSERT TEXT
      {
        insertText: {
          objectId: elementId,
          insertionIndex: iIndex,
          text: txt,
        },
    }];
    //BATCH UPDATE
    return slides.presentations.batchUpdate({
        presentationId,
        resource: {
            requests,
        },
    }, (err, res) => {
        if (err) {
            error(err);
        }else{
            console.log('Success'); 
            //INCREASES COUNTER BY 1
            num = num + 1;
            //ASKS IF A NEW SLIDE WANTS TO BE CREATED
            askYOrN ();}});}

它会产生这个错误:

Error: Invalid value at 'requests[0]' (oneof), oneof field 'kind' is already set. Cannot set 'createShape'

文本输入和存储正确。有没有人有办法解决吗?提前致谢。

最佳答案

这个修改怎么样?

修改点:

  • createSlidecreateShapeinsertText 放入requests 数组中的每个元素。
  • insertionIndexinsertText 从 0 开始。

修改后的脚本:

请修改requests如下。

var requests = [
  {
    createSlide: {
      insertionIndex: iIndex,
      objectId: pageId,
      slideLayoutReference: {
        predefinedLayout: 'BLANK',
      },
    },
  },
  {
    //CREATE THE TEXTBOX
    createShape: {
      objectId: elementId,
      shapeType: 'TEXT_BOX',
      elementProperties: {
        pageObjectId: pageId,
        size: {
          height: pt350,
          width: pt350,
        },
        transform: {
          scaleX: 1,
          scaleY: 1,
          translateX: 350,
          translateY: 100,
          unit: 'PT',
        },
      },
    },
  },
  {
    //INSERT TEXT
    insertText: {
      objectId: elementId,
      insertionIndex: iIndex - 1,
      text: txt,
    },
  }
];

备注:

  • 此修改后的脚本假定启用了 Slides API,并且 https://www.googleapis.com/auth/presentations 的范围包含在范围内。

引用资料:

如果这不是您想要的,我很抱歉。

关于javascript - 错误 : Invalid value at 'requests[0]' (oneof), 一个字段 'kind' 已经设置。无法设置 'createShape',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53137069/

相关文章:

javascript - 如何使用nodejs mysql从html表单传递id

javascript - PHP,服务器发送事件 - date_default_timezone_get() 在远程文件中无法正常工作

javascript - 滚动页眉大小调整不当

javascript - php node.js redis session 共享身份验证

javascript - 如何通过 Google 幻灯片上的链接/按钮调用函数?

javascript - JavaScript 与 Java 中的动画图像对比

javascript - 想要检查用户是否已经存在 MongoDB

node.js - 对所有测试只运行一次 ava test.before()

google-apps-script - 使用 Google Slides Apps 脚本设置表格的宽度和高度

google-apps-script - 如何使用幻灯片的谷歌应用脚​​本在文本框中垂直对齐文本