首页 > 解决方案 > 我无法通过 GAS 将部分数据从 chrome 扩展发送到电子表格

问题描述

我想通过 GAS 将一些数据从 chrome 扩展发送到电子表格,但只有“最后一个”被删除,尽管“标题”和“URL”已成功发送。

因此,您能检查一下代码吗?

const gasUrl = "here is my spreadsheet GAS url";

chrome.tabs.query({active: true, currentWindow: true}, tabs => {
  title = tabs[0].title;
  url = tabs[0].url;
  last = url.slice(-8); // I want to send url's last 8 letters.
  console.log(`Title: ${title}`);
  console.log(`URL: ${url}`);
  console.log(`Last: ${last}`); // I can see "last" is worked as intend here.
});

$(function() {
  $('#doit').on('click', function() {
    post2GAS(title, url, last);
  });
});

function post2GAS(title, url, last){
  const data = {
    title: title,
    url: url,
    last: last
  }

  $.ajax({
    type: 'POST',
    url: gasUrl,
    data: JSON.stringify(data)
  })
    .done(function (data) {
      console.log("success"); // I can see success on console.
    })
    .fail(function (jqXHR, textStatus, errorThrown) {
      console.log("failed");
      console.log("XMLHttpRequest : " + jqXHR.status);
      console.log("textStatus : " + textStatus);
      console.log("errorThrown : " + errorThrown);
    })
    .always((data) => {
      console.log("finished"); // I can see finished on console.
    });
}

似乎 GAS 无法正确捕获“最后一个”参数,但我找不到具体原因。

这是GAS代码。

function doPost(e) {
  var params = JSON.parse(e.postData.getDataAsString());
  var title  = params.title;
  var url    = params.url;
  var last = params.last;

  var sheet = SpreadsheetApp.openById('Sheet ID').getSheetByName("Sheet Name");
  sheet.appendRow([title, url, last]);

  var output = ContentService.createTextOutput();
  output.setMimeType(ContentService.MimeType.JSON);
  output.setContent(JSON.stringify( { sucsess: true }));
  return output;
}

谢谢,

标签: javascriptgoogle-apps-scriptgoogle-chrome-extension

解决方案


I'm so sorry, I have not deploy new GAS. And when I deployed, it's solved.

Hence, I'm close this ticket here.


推荐阅读