Google apps script 使用谷歌应用程序脚本替换字符

Google apps script 使用谷歌应用程序脚本替换字符,google-apps-script,Google Apps Script,我有一个列,它是一个字符串格式的日期 2020-02-23T12:14:06+0000 我想去掉T,用空格替换,也就是完全去掉最后一部分(+0000) 我试过这个 var A1 = CONTENT.getRange("B:B").getValue(); var A1String = A1.toString().replace("T*", ""); 但它不起作用 有什么想法吗 这是我想将其合并到的原始脚本 var spreadsheet = SpreadsheetApp.getAct

我有一个列,它是一个字符串格式的日期

2020-02-23T12:14:06+0000

我想去掉T,用空格替换,也就是完全去掉最后一部分(+0000)

我试过这个

  var A1 = CONTENT.getRange("B:B").getValue();
var A1String = A1.toString().replace("T*", "");
但它不起作用

有什么想法吗

这是我想将其合并到的原始脚本

    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('sheetname');
  var range = sheet.getRange("A:C");
  var response = UrlFetchApp.fetch("API CALL");
  var dataAll = JSON.parse(response.getContentText());
  var dataSet = dataAll.data;
  var rows = [],
    data;
  for (i = 0; i < dataSet.length; i++) {
    data = dataSet[i];
    rows.push([new Date(),data.created_time,data.message,data.permalink_url,
               data.reactions.summary.total_count
               ,data.comments.summary.total_count,data.insights.data[1].values[0].value,data.insights.data[2].values[0].value,data.insights.data[3].values[0].value,data.insights.data[0].values[0].value['link clicks'],data.insights.data[0].values[0].value['photo view'],data.insights.data[0].values[0].value['other clicks'],data.insights.data[0].values[0].value['video play'],data.insights.data[4].values[0].value,data.insights.data[5].values[0].value,data.insights.data[6].values[0].value,data.insights.data[7].values[0].value["like"],data.insights.data[7].values[0].value["love"],data.insights.data[7].values[0].value["wow"],data.insights.data[7].values[0].value["haha"],data.insights.data[7].values[0].value["sorry"]]); //your JSON entities here
  }
  Logger.log(rows)
  //sheet.getRange(getlastRow() + 1, 1, rows.length, 2).setValues(rows);
  sheet.getRange(sheet.getLastRow() + 1, 1, rows.length, 22).setValues(rows);





/**
 * Removes duplicate rows from the current sheet.
 */

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheetname');
  var data = sheet.getDataRange().getValues();

  data.reverse(); //reverses the row order.

  var last=sheet.getLastRow();
  var newData = new Array();
  for(i in data){
    //Logger.log(i);
    var row = data[i];
    //Logger.log(row[5]);
    var duplicate = false;
    for(j in newData){
      //Logger.log(newData[j][3]);
      if(row[3] == newData[j][3]){
        duplicate = true;
      }
    }
    if(!duplicate){
      newData.push(row);
    }
  }

  newData.reverse(); // reverses your data back to its original order.

  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
  }
//  
  // 
var spreadsheet=SpreadsheetApp.getActiveSpreadsheet();
var sheet=spreadsheet.getSheetByName('sheetname');
var范围=sheet.getRange(“A:C”);
var response=UrlFetchApp.fetch(“API调用”);
var dataAll=JSON.parse(response.getContentText());
var数据集=dataAll.data;
变量行=[],
数据;
对于(i=0;i
如果要始终删除相同的内容(即“T”和“+0000”),可以使用以下脚本:

获得的结果:
2020-02-23 12:14:06

代码:

    // ---------- Menu ----------
// Add a Menu named Format Date to run the script

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Format Date')
  .addItem('Go!', 'FormatDate')
  .addToUi();
}


function FormatDate() {
var ss = SpreadsheetApp.getActiveSheet(),
    array = [];
ss.getRange("B2:B") // Choose the range here
    .getValues()
    .forEach(function (dates) {

      // "T" is replaced with a space: " " and "+0000" is replace with empty:""

      [["T", " "], ["+0000", ""]] 
            .map(function (a, i) {
                return dates = replace(dates.toString(), a[0], a[1])
            })
        array.push([dates])
    });

// You can set a different column to write the data
// Or keep B2:B to overwrite your data

  ss.getRange("B2:B") 
    .setValues(array)
}


function replace(d, a, r) {
return d.indexOf(a) > -1 ? d.split(a)
    .join(r) : d;
}

Credit:很久以前受JPV代码启发,提出了一个不同的问题

如果您想删除相同的内容(即“T”和“+0000”),可以使用以下脚本:

获得的结果:
2020-02-23 12:14:06

代码:

    // ---------- Menu ----------
// Add a Menu named Format Date to run the script

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Format Date')
  .addItem('Go!', 'FormatDate')
  .addToUi();
}


function FormatDate() {
var ss = SpreadsheetApp.getActiveSheet(),
    array = [];
ss.getRange("B2:B") // Choose the range here
    .getValues()
    .forEach(function (dates) {

      // "T" is replaced with a space: " " and "+0000" is replace with empty:""

      [["T", " "], ["+0000", ""]] 
            .map(function (a, i) {
                return dates = replace(dates.toString(), a[0], a[1])
            })
        array.push([dates])
    });

// You can set a different column to write the data
// Or keep B2:B to overwrite your data

  ss.getRange("B2:B") 
    .setValues(array)
}


function replace(d, a, r) {
return d.indexOf(a) > -1 ? d.split(a)
    .join(r) : d;
}

Credit:很久以前受JPV的代码启发提出了一个不同的问题

使用
Textfinder
类。有关官方文档,请参阅。使用
Textfinder
类。有关官方文档,请参阅。嘿,谢谢你的回答。它是一个函数,但当我尝试将它合并到我的原始脚本中时,我得到了它“未定义替换"。你能告诉我如何合并它吗?我将在我的原始帖子上附上我脚本的其余部分。@NabnubYou可以一个接一个地调用函数,需要时就调用这个函数。如果函数应该在特定的工作表上运行,请使用
getSheetByName
进行必要的更改。该函数是必需的每次第一个函数运行时,除了第一个函数之外,我似乎找不到一个方法来运行它。但是我得到了我提到的错误。嗨,如果解决方案确实回答了你最初的问题,请考虑通过一个正确的答案来勾选它。明智的是,你不会学到太多。@Andreas出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助-它也可以帮助将来有同样问题的其他人找到解决方案:)嘿,谢谢你的回答。它可以作为函数工作,但当我尝试将它合并到我的原始脚本中时,我得到“替换未定义”。你能告诉我如何合并它吗?我将在我的原始帖子上附上我脚本的其余部分。@NabnubYou可以一个接一个地调用函数,需要时就调用这个函数。如果函数应该在特定的工作表上运行,请使用
getSheetByName
进行必要的更改。该函数是必需的每次第一个函数运行时,除了第一个函数之外,我似乎找不到一个方法来运行它。但是我得到了我提到的错误。嗨,如果解决方案确实回答了你最初的问题,请考虑通过一个正确的答案来勾选它。明智的是,你不会学到太多。@Andreas出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助——它还可以帮助将来遇到同样问题的其他人找到解决方案:)