Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何将数据从一个电子表格附加到另一个电子表格?_Google Apps Script_Google Sheets_Google Sheets Api_Spreadsheet - Fatal编程技术网

Google apps script 如何将数据从一个电子表格附加到另一个电子表格?

Google apps script 如何将数据从一个电子表格附加到另一个电子表格?,google-apps-script,google-sheets,google-sheets-api,spreadsheet,Google Apps Script,Google Sheets,Google Sheets Api,Spreadsheet,我有这个手巧的剧本大约一年了。在多个工作表上定期保存数据(加密价格)非常有效。但我的电子表格即将爆炸,太多的单元格。所以我想使用多个电子表格。为了做到这一点,我需要混合我的脚本一点,但我不能单独做到这一点 目标:在不同的电子表格中附加一系列值。 说明: 有两种方法可以从绑定到脚本的电子表格中获取不同电子表格的对象: : 打开具有给定ID的电子表格。电子表格ID可以是 从其URL中提取。例如,URL中的电子表格ID 是 “abc1234567” : 打开具有给定URL的电子表格。引发脚

我有这个手巧的剧本大约一年了。在多个工作表上定期保存数据(加密价格)非常有效。但我的电子表格即将爆炸,太多的单元格。所以我想使用多个电子表格。为了做到这一点,我需要混合我的脚本一点,但我不能单独做到这一点

  • 目标:在不同的电子表格中附加一系列值。
说明: 有两种方法可以从绑定到脚本的电子表格中获取不同电子表格的对象:

  • :
打开具有给定ID的电子表格。电子表格ID可以是 从其URL中提取。例如,URL中的电子表格ID 是 “abc1234567”

  • :
打开具有给定URL的电子表格。引发脚本异常 如果URL不存在或用户无权访问 访问它

你可以选择最适合你的,但在性能上没有区别。我更喜欢
openById
,因为您传递了一个“更短”的字符串(
id
vs
url

解决方案: 更改:

var ss = SpreadsheetApp.getActive();
var valuesToLog = ss.getRange(rangeToLog).getValues();
var logSheet = ss.getSheetByName(sheetToLogTo);
var ss = SpreadsheetApp.getActive(); // source spreadsheet
var ss_t = SpreadsheetApp.openById('id of target spreadsheet'); // target spreadsheet
var valuesToLog = ss.getRange(rangeToLog).getValues();
var logSheet = ss_t.getSheetByName(sheetToLogTo); // logSheet of the target spreadsheet
// [START modifiable parameters]
var rangeToLog = 'Source!A1:B20';
var sheetToLogTo = 'Target';

function appendValuesToArchiveSheet() {

  var ss = SpreadsheetApp.getActive(); // source spreadsheet
  var ss_t = SpreadsheetApp.openById('id of target spreadsheet'); // new code
  var valuesToLog = ss.getRange(rangeToLog).getValues();
  var logSheet = ss_t.getSheetByName(sheetToLogTo); // modified code
  if (!logSheet) {
    logSheet = ss_t.insertSheet(sheetToLogTo); // modified code
    logSheet.appendRow(['Date time', 'Data']);
  }
  var rowToAppend = [new Date()].concat(
    valuesToLog.reduce(function concatArrays_(left, right) {
      var arrayContainsData = right.some(function isNonBlanky_(element, index, array) {
        return element !== null && element !== undefined && element !== '';
      });
      return arrayContainsData ? left.concat(right) : left;
    })
  );
  logSheet.appendRow(rowToAppend);
}
至:

var ss = SpreadsheetApp.getActive();
var valuesToLog = ss.getRange(rangeToLog).getValues();
var logSheet = ss.getSheetByName(sheetToLogTo);
var ss = SpreadsheetApp.getActive(); // source spreadsheet
var ss_t = SpreadsheetApp.openById('id of target spreadsheet'); // target spreadsheet
var valuesToLog = ss.getRange(rangeToLog).getValues();
var logSheet = ss_t.getSheetByName(sheetToLogTo); // logSheet of the target spreadsheet
// [START modifiable parameters]
var rangeToLog = 'Source!A1:B20';
var sheetToLogTo = 'Target';

function appendValuesToArchiveSheet() {

  var ss = SpreadsheetApp.getActive(); // source spreadsheet
  var ss_t = SpreadsheetApp.openById('id of target spreadsheet'); // new code
  var valuesToLog = ss.getRange(rangeToLog).getValues();
  var logSheet = ss_t.getSheetByName(sheetToLogTo); // modified code
  if (!logSheet) {
    logSheet = ss_t.insertSheet(sheetToLogTo); // modified code
    logSheet.appendRow(['Date time', 'Data']);
  }
  var rowToAppend = [new Date()].concat(
    valuesToLog.reduce(function concatArrays_(left, right) {
      var arrayContainsData = right.some(function isNonBlanky_(element, index, array) {
        return element !== null && element !== undefined && element !== '';
      });
      return arrayContainsData ? left.concat(right) : left;
    })
  );
  logSheet.appendRow(rowToAppend);
}
logSheet=ss.insertSheet(sheetToLogTo)
记录表=插入表(sheetToLogTo)

完整代码:

var ss = SpreadsheetApp.getActive();
var valuesToLog = ss.getRange(rangeToLog).getValues();
var logSheet = ss.getSheetByName(sheetToLogTo);
var ss = SpreadsheetApp.getActive(); // source spreadsheet
var ss_t = SpreadsheetApp.openById('id of target spreadsheet'); // target spreadsheet
var valuesToLog = ss.getRange(rangeToLog).getValues();
var logSheet = ss_t.getSheetByName(sheetToLogTo); // logSheet of the target spreadsheet
// [START modifiable parameters]
var rangeToLog = 'Source!A1:B20';
var sheetToLogTo = 'Target';

function appendValuesToArchiveSheet() {

  var ss = SpreadsheetApp.getActive(); // source spreadsheet
  var ss_t = SpreadsheetApp.openById('id of target spreadsheet'); // new code
  var valuesToLog = ss.getRange(rangeToLog).getValues();
  var logSheet = ss_t.getSheetByName(sheetToLogTo); // modified code
  if (!logSheet) {
    logSheet = ss_t.insertSheet(sheetToLogTo); // modified code
    logSheet.appendRow(['Date time', 'Data']);
  }
  var rowToAppend = [new Date()].concat(
    valuesToLog.reduce(function concatArrays_(left, right) {
      var arrayContainsData = right.some(function isNonBlanky_(element, index, array) {
        return element !== null && element !== undefined && element !== '';
      });
      return arrayContainsData ? left.concat(right) : left;
    })
  );
  logSheet.appendRow(rowToAppend);
}

我在两种解决方案中都遇到了这个错误:例外:您没有调用SpreadsheetApp.openById的权限。所需权限:appendValuesToArchiveSheet@Code.gs:21禁止使用@OnlyCurrentDoc它现在可以正常工作了!非常感谢你的帮助@NiphitAe很高兴它成功了!