如何在 C# 中更新 google docs api 命名范围文本?

问题描述 投票:0回答:1

我想将文本从 C# textbox1 插入到 Google Docs 模板主体命名范围“BoddyTitle”,并将文本从 textbox2 插入主体命名范围“BoddyContent”。

因为创建的命名范围的索引会针对每次更新进行修改,所以我需要在使用新文本更新之前获取该索引的值。

请帮助获取该索引。

List <Request> requests = new List<Request>
{
};

requests.Add(new Request() 
{  
   ReplaceNamedRangeContent = new ReplaceNamedRangeContentRequest()  
  { 
       Text = textBox1.Text,  NamedRangeName = "BoddyTitle" 
  } 
}); // Index = 5-50, 
                              
requests.Add(new Request()  
{  
  ReplaceNamedRangeContent = new ReplaceNamedRangeContentRequest() 
  {  
     Text = textBox2.Text,  NamedRangeName = "BoddyContent" 
  } 
}); // Index = 55-10000,

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest { Requests = requests };

dservice.Documents.BatchUpdate(body, docid).Execute();
c# json text documentation
1个回答
0
投票

解决了,代码在这里

 List<Request> requests = new List<Request> { };

        DocumentsResource.GetRequest req = dservice.Documents.Get(docid);
        Document doc = req.Execute();


        int max = 0;
        for (int i = 0; i < doc.Body.Content.Count; i++)
        {
            if (doc.Body.Content[i].EndIndex.Value > max)
            {
                max = doc.Body.Content[i].EndIndex.Value;
            }
        }

        if (max < 3)
        {
         //   requests.Add(new Request() { DeleteNamedRange = new DeleteNamedRangeRequest() { Name = "BoddyTitle" } });
         //   requests.Add(new Request() { DeleteNamedRange = new DeleteNamedRangeRequest() { Name = "BoddyContent", } });
            requests.Add(new Request() { InsertText = new InsertTextRequest() { Text = "\n\nx", Location = new Location { Index = 1 } } });
            requests.Add(new Request() { InsertText = new InsertTextRequest() { Text = "\n\nx", Location = new Location() { SegmentId = "", Index = 4 } } });
            requests.Add(new Request() { CreateNamedRange = new CreateNamedRangeRequest() { Name = "BoddyTitle", Range = new Range() { SegmentId = "", StartIndex = 3, EndIndex = 4 } } });
            requests.Add(new Request() { CreateNamedRange = new CreateNamedRangeRequest() { Name = "BoddyContent", Range = new Range() { SegmentId = "", StartIndex = 6, EndIndex = 7 } } });
        }

                  
        //                   requests.Add(new Request() { DeleteContentRange = new DeleteContentRangeRequest() { Range = new Range { StartIndex = 1, EndIndex = max - 1 } } });


        if (textBox1.Text != "" && textBox2.Text != "")
        {
          requests.Add(new Request() { ReplaceNamedRangeContent = new ReplaceNamedRangeContentRequest() { Text = textBox1.Text.Replace("\r\n", "\n"), NamedRangeName = "BoddyTitle" } });
          requests.Add(new Request() { ReplaceNamedRangeContent = new ReplaceNamedRangeContentRequest() { Text = textBox2.Text.Replace("\r\n", "\n"), NamedRangeName = "BoddyContent" } });
           
        }
          else { MessageBox.Show("Textbox Empty" ); }

        if (requests.Count >0)
        {
            BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest { Requests = requests };
            dservice.Documents.BatchUpdate(body, docid).Execute();Process.Start("https://docs.google.com/document/d/doc_id/edit?usp=sharing");
        }
© www.soinside.com 2019 - 2024. All rights reserved.