Как обновить google docs api namedrange text в c#? - PullRequest
0 голосов
/ 01 августа 2020

Я хочу вставить текст из c# textbox1 в тело шаблона документов Google с именем range "BoddyTitle" и из textbox2 в тело namedrange "BoddyContent".

Поскольку индексы созданного namedrange изменяются при каждом обновлении, я необходимо получить значение этих индексов перед обновлением новым текстом.

Пожалуйста, помогите получить эти индексы.

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();

1 Ответ

0 голосов
/ 10 августа 2020

решено, вот код

 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");
        }
...