gpt4 book ai didi

javascript - openById() 未打开电子表格

转载 作者:行者123 更新时间:2023-12-02 21:07:57 25 4
gpt4 key购买 nike

也许你可以帮助我解决我花了几个小时试图解决的问题。我有一个函数,如果该行的第 6 列中的值设置为 6,则该函数应该将行单元格的某些值复制到另一个电子表格。我已经使用 ui.alert() 来知道函数在哪里停止工作,以及当我用 ss = SpreadsheetApp.openById('123456789') 覆盖变量 ss = SpreadsheetApp.getActiveSpreadsheet() 时。我已经在另一个 Google 脚本中做了这个,并且成功了!在这里你可以看到我的代码:

var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen() {
ui.createMenu('xyz')
.addItem('xyz', 'menuItem1')
.addToUi();
}

function menuItem1() {
var row = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
var col = 2;
var x = SpreadsheetApp.getActiveSheet().getRange(row, col).getValue();
var y = Browser.inputBox(titletranslation , 'Please enter the translation here', Browser.Buttons.OK_CANCEL);
if(y != "cancel" && y != "") {
var id ="123456789"
doc = DriveApp.getFileById(id).makeCopy(y)
doc.setSharing(DriveApp.Access.ANYONE_WITH_LINK,DriveApp.Permission.EDIT)
var url = doc.getUrl()
SpreadsheetApp.getActiveSheet().getRange(row, 5).setValue(url)
}
}

function onEdit(event){
var row = event.range.getRow()
var column = event.range.getColumn()
if(column == 6) {
if(ss.getActiveSheet().getRange(row, column).getValue() == 6) {
var x = ss.getActiveSheet().getRange(row, 1)
var y = ss.getActiveSheet().getRange(row, 2)
var z = ss.getActiveSheet().getRange(row, 3)
var xx = ss.getName()
var yy = ss.getActiveSheet().getRange(row,4)

ss = SpreadsheetApp.openById('123456')

ss.setActiveSheet(ss.getSheetByName('Need to be published'))

ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,1).setValue(x)
ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,2).setValue(y)
ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,3).setValue(z)
ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,4).setValue(xx)
ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,5).setValue(yy)



}

}

}

希望你知道问题是什么:)提前致谢

最佳答案

问题是组合

var x = ss.getActiveSheet().getRange(row, 1)

ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,1).setValue(x)

让我们将其转换为:

var range1 = ss.getActiveSheet().getRange(row, 1);
var range2 = ss.getActiveSheet().getRange(ss.getActiveSheet().getLastRow() + 1,1);
range2.setValue(range1);

range1(或x)不是一个值,因此将其用作方法setValue()的参数是错误的,请参阅documentation .

如果您想要将range1分配给range2,则正确的语法是

var value = range1.getValue();
range2.setValue(value);

您应该相应地更改使用 setValue() 方法的所有行。

关于javascript - openById() 未打开电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61177040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com