Я хочу отправлять текущий активный URL-адрес вкладки из расширения Chrome в скрипт приложения Google (развернутый как веб-приложение) каждые 15 секунд, чтобы сохранить его в листе Google.
вот код расширения Chrome - background.js:
function setCell(param){
var u = 'https://script.google.com/macros/s/AKf../exec';
var xml = new XMLHttpRequest();
xml.open('GET', u, true);
xml.send(param);
}
function setCell(param){
var u = 'https://script.google.com/macros/s/AKf..FygM/exec';
var xml = new XMLHttpRequest();
xml.open('POST', u, true);
xml.send(param);
}
chrome.tabs.onUpdated.addListener( function( tabId, changeInfo, tab) {
var param = tab.url;
if (tab.status == 'complete'){
setCell(param);
}
chrome.extension.getBackgroundPage().console.log( param );
})
вот код веб-приложения (скрипт приложения Google):
/*
1. Naming convention -- YYYY-MM-DD-Username
2. Chrome extension to capture url every time Active Tab changes.
*/
var email = Session.getActiveUser().getEmail();
var userId = email.match(/^([^@]*)@/)[1]; // to get usename
var f_id= null;
var sheet= null;
var params= null;
function doGet(e) {
var url_f = e.parameter.value;
assign_1(url_f);
Logger.log(url_f +" "+ 11);
// return HtmlService.createHtmlOutput(url_f + " -- updated");
}
function doPost(e) {
var url_f = e.parameter.value;
assign_1(url_f); //working
Logger.log(url_f +" "+ 11);
// return HtmlService.createHtmlOutput(url_f + " -- updated");
}
function assign_1(url_f) {
var files_present = DriveApp.getFilesByName(date_Format(new Date())+"-
"+userId)
while (files_present.hasNext()) {
var file = files_present.next();
var f_name=file.getName();
var f_id= file.getId();
Logger.log(file.getName() +" "+ 1);
}
if (!f_name){
creat_Ssheet();
}
else{
open_Ssheet();
}
function creat_Ssheet(){
var ss= SpreadsheetApp.create(date_Format(new Date())+"-"+userId); // creating spreadsheet
// Saving speadsheet into specific folder
folder = DriveApp.getFolderById("1LrUHlZGrm_wxxPHTiU_4C67xLqhR0STl"); // change ID accordingly
var temp = DriveApp.getFileById(ss.getId());
folder.addFile(temp)
DriveApp.getRootFolder().removeFile(temp)
var sheet = ss.getActiveSheet();
sheet_format(sheet);
sheet_Update(sheet);
Logger.log(sheet.getName()+" --created "+2); //testing
}
function open_Ssheet(){
var ss = SpreadsheetApp.openById(f_id);
SpreadsheetApp.setActiveSpreadsheet(ss);
var sheet= ss.getActiveSheet();
sheet_format(sheet);
sheet_Update(sheet);
Logger.log(sheet.getName()+" --selected "+ 3); //testing
}
function sheet_format(sheet){
sheet.setFrozenRows(1);
var values = [ ["Sr. No.", "URL", "Time", "Comment"] ];
var range = sheet.getRange("A1:D1");
range.setValues(values);
range.setBackground('yellow');
var lc = sheet.getLastColumn();
var r= sheet.getRange(1, 1,1000,lc);
var set=r.setHorizontalAlignment("center");
Logger.log(4); //testing
}
function sheet_Update(sheet){
var d = new Date();
var time = d.toLocaleTimeString();
var s_n= sheet.getLastRow();
sheet.appendRow([s_n, url_f ,time]); //["Sr. No.", "URL" "Time", "Comment"]
}
function date_Format(date) { //Date formation
var d = new Date(date);
var month = '' + (d.getMonth() + 1);
var day = '' + d.getDate();
var year = d.getFullYear();
var time = d.toLocaleTimeString();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('-');
}
}
Получениемножественная переменная 'undefined' вместо URL при каждом открытии новой вкладки.
manifest.json
{
"manifest_version": 2,
"name": "Assign_1",
"description": "Capture username, URL and stores it into Google sheet.",
"version": "1.0",
"icons": { "16": "icons/assign1_logo_16.png",
"48": "icons/assign1_logo_48.png",
"128": "icons/assign1_logo_128.png" },
"browser_action": {
"default_icon": "icons/assign1_logo_16.png",
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"activeTab",
"https://script.google.com/",
"http://*/*",
"https://*/*"
],
"background": {
"persistent": false,
"scripts": ["background.js"],
"oauthScopes": [
// not clear
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/spreadsheets"
]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]}
- это снимок вывода.
Пожалуйста, предоставьте мне решение, чтобы получить URL-адрес и сохранить его в листе Google.