我的 Google 表单回复表也需要同样的东西。这是一段代码。
function findTransLoc(inId) {
console.log('Begin findTransLoc');
const ui = SpreadsheetApp.getUi();
console.log(' inId: ', inId );
const destSs = SpreadsheetApp.openById(inId)
let srcShtNm = getTabNm(destSs)
let srcSht = destSs.getSheetByName(srcShtNm);
const destShtNm = srcShtNm + 'xd';
let destSht = destSs.getSheetByName(destShtNm);
if ( destSht ) {
console.log('clearing existing destination sheet: ', destShtNm );
destSht.clear();
} else {
destSht = destSs.insertSheet(destShtNm);
}
var srcRng = srcSht.getDataRange();
var srcRows = srcRng.getLastRow();
console.log('srcRows: ', srcRows );
var srcCols = srcRng.getLastColumn();;
console.log('srcCols: ', srcCols );
var srcDataArr = srcRng.getValues();
var resultArr = [],promptList;
for (var col = 0; col < srcCols; col++) { // Loop over array cols
resultArr[col] = [];
for (var row = 0; row < srcRows; row++) { // Loop over array rows
console.log('row: ', row, ' col: ', col, ' ', srcDataArr[row][col] );
resultArr[col][row] = srcDataArr[row][col].toString(); // Rotate
}
}
console.log('resultArr: ' , JSON.stringify(resultArr) );
destSht.getRange(1, 1, srcCols, srcRows ).setValues(resultArr);
}
我将它概括为让我选择电子表格中的任何选项卡,所以有这个代码
function getTabNm(destSs) {
console.log('Begin getTabNm');
const ui = SpreadsheetApp.getUi();
var sheetList = [], tabNm, promptList = '', i = 1, srcSht;
destSs.getSheets().forEach(function(val){
tabNm = val.getName();
promptList = promptList + i + ': ' + tabNm + '\n';
sheetList.push([i,tabNm]);
i++
});
console.log('promptList: ', promptList );
console.log( JSON.stringify(sheetList) );
let result = ui.prompt(
'Which tab do you want to work with? Enter the number?\n' +
promptList +
'\n_____Click close button or cancel with the X to quit.',
ui.ButtonSet.OK_CANCEL);
// Process the user's response.
let button = result.getSelectedButton();
let inTxt = result.getResponseText();
let parsed = parseInt(inTxt, 10);
if (isNaN(parsed)) { parsed = 0; }
console.log('inTxt: ', inTxt, ' parsed: ', parsed );
srcShtNm = sheetList[parsed-1][1]; // zero based array
console.log('returning srcShtNm: ', srcShtNm );
return srcShtNm;
}
如果您不想要这个,请拨打 getTabNm:
let srcShtNm = getTabNm(destSs)
let srcSht = destSs.getSheetByName(srcShtNm);
并添加这一行以获取当前工作表。
let srcSht = destSs.getActiveSheet();
我还有很多其他的“花里胡哨”,您可能会对我的代码感兴趣。如有问题或建议,请随时复制并与我交流。
https://docs.google.com/spreadsheets/d/1Amy8LgeCdl8RsDr98pEVXVSqrMzGqMc_VuLYQy94mC8/edit?usp=sharing