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的电子表格。引发脚
- 目标:在不同的电子表格中附加一系列值。
- :
- :
openById
,因为您传递了一个“更短”的字符串(id
vsurl
)
解决方案:
更改:
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很高兴它成功了!