Скопируйте файл appscript + включенные в скрипт листы в новый файл appsScript и новый лист - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть файл appscript, содержащий несколько функций и 2 файла листов (могут отличаться), я хочу скопировать их все в новый файл appscript, и все содержимое файла 2 исходных листов будет скопировано в новый файл 2 листов.

На входе будет исходный идентификатор приложения, все исходные идентификаторы электронных таблиц, которые я хочу скопировать, и целевые идентификаторы электронных таблиц обоих. У меня не будет конечного идентификатора приложения.

Вывод будет быть одним и тем же приложением назначения со всеми функциями и всеми электронными таблицами. Это мне нужно для достижения этого с помощью node js путем создания API. Я знаю о node js, но новое в appscript.

Резюме - я просто хочу скопировать автономный скрипт, который содержит html, css и сам скрипт, имеющий функции в скрипте, связанном с контейнером, который является пустым. Имя скрипта и html, css имя файла также должны совпадать в скрипте, связанном с контейнером, как это было в автономном скрипте, html и css файлы. Пожалуйста, дайте мне знать, как это

Вот мой код:

const fs = require('fs');

const readline = require('readline');

const {google} = require('googleapis');

const express = require('express')

const app = express()

const request = require("request")

const key = require("./auth.json")

var bodyParser = require('body-parser')

const SCOPES = ['https://www.googleapis.com/auth/script.projects',
       'https://www.googleapis.com/auth/spreadsheets',
        'https://www.googleapis.com/auth/drive',
        'https://www.googleapis.com/auth/calendar',
        'https://www.googleapis.com/auth/script.projects',
];

const jwt = new google.auth.JWT(key.client_email, null, key.private_key, SCOPES)

const drive = google.drive({version: 'v3', jwt});

const port = 3000

app.use(bodyParser.urlencoded({ extended: false }))

app.post('/', async (req, res) => {


jwt.authorize(async (err, response) => {
 
    let options = {
        method: "GET",
        url:           `https://script.googleapis.com/v1/projects/${req.body.sourceScriptId}/content`,
       
        headers: {
         "Authorization":'Bearer '+ response.access_token,
          "Accept": "application/json",
          "Content-type": "application/json"
        },
      };
     
      return new Promise(function (resolve, reject) {

        try{
            request(options, async function (error, response1, body) {
                if (error) {
                  reject(error);
                } else {
                  body = JSON.parse(body);
                  console.log("body.................",body)
                  if (body.httpCode && (body.httpCode !== 200 || body.httpCode !== 201))
                    reject(body);
                  else
                    {
      
      console.log(response.access_token)
                      let options1 = {
                          method: "PUT",
                          url:  `https://script.googleapis.com/v1/projects/${req.body.sourceScriptId}/content`,
                         
                          headers: {
                           "Authorization":'Bearer '+ response.access_token,
                            "Accept": "application/json",
                            "Content-type": "application/json"
                          },
                          body: body,
                          json: true

                  
                        };
      
                        
                          await request(options1, async function (error, response2, body) {
                              if (error) {
                                reject(error);
                              } else {
                               
                                if (body.httpCode && (body.httpCode !== 200 ||      body.httpCode !== 201))
                                  reject(body);
      
                                  else{

                                      resolve(body)
                                  }
                                  
                              }
                              })
                          } 
              }
            });                  
        }

        catch(err){
            console.log("error.................",err)
        }
    
  })
})

})

app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))

Спасибо, Панкадж

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...