У меня есть файл 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}`))
Спасибо, Панкадж